      SUBROUTINE VARALLOC  

      USE GLOBAL  
C  
  
      if (NQSER.GE.0) NCSERM2 = NCSERM   ! causes memory issues when allocate 4D array CSER with all stream data
      ALLOCATE(AAU(LCM))  
      ALLOCATE(AAV(LCM))  
      ALLOCATE(AB(LCM,KSM))  
      ALLOCATE(ABEFF(LCM,KSM))  
      ALLOCATE(ABLPF(LCM,KSM))  
      ALLOCATE(ACCWFLD(LCM,2))  
      ALLOCATE(ACCWX(MTM))  
      ALLOCATE(ACOEF(LCM,0:KBM))  
      ALLOCATE(AGWELV(LCM))  
      ALLOCATE(AGWELV1(LCM))  
      ALLOCATE(AGWELV2(LCM))  
      ALLOCATE(AH(LCM,KCM))  
      ALLOCATE(AHC(LCM,KCM))  
      ALLOCATE(AHU(LCM,KCM))  
      ALLOCATE(AHULPF(LCM,KCM))  
      ALLOCATE(AHV(LCM,KCM))  
      ALLOCATE(AHVLPF(LCM,KCM))  
      ALLOCATE(ALOW(LCM,KBM+1))  
      ALLOCATE(ALPVEG(0:NVEGTPM))  
      ALLOCATE(AMCP(LCM))  
      ALLOCATE(AMCU(LCM,KCM))  
      ALLOCATE(AMCUE(LCM))  
      ALLOCATE(AMCV(LCM,KCM))  
      ALLOCATE(AMCVE(LCM))  
      ALLOCATE(AMPU(MTM))  
      ALLOCATE(AMPV(MTM))  
      ALLOCATE(AMSP(LCM))  
      ALLOCATE(AMSU(LCM,KCM))  
      ALLOCATE(AMSUE(LCM))  
      ALLOCATE(AMSV(LCM,KCM))  
      ALLOCATE(AMSVE(LCM))  
      ALLOCATE(ANGWRMFD(NQWRM))  
      ALLOCATE(AP(KPCM))  
      ALLOCATE(APCG(LCM))  
      ALLOCATE(APT(KPCM,KCM))  
      ALLOCATE(AQ(LCM,KCM))  
      ALLOCATE(AQCTL(NQCTTM))  
      ALLOCATE(ASURFEL(LCM))  
      ALLOCATE(ATMP(KCM))  
      ALLOCATE(ATMWHT(LCM,NASERM))  
      ALLOCATE(AV(LCM,KSM))  
      ALLOCATE(AVUI(LCM,KSM))  
      ALLOCATE(AVVI(LCM,KSM))  
      ALLOCATE(B(LCM,KCM))  
      ALLOCATE(B0(KCM,MLM))  
      ALLOCATE(B1(LCM,KCM))  
      ALLOCATE(B1DT1(KCM,MLM))  
      ALLOCATE(BBT(LCM,0:KCM))  
      ALLOCATE(BBU(LCM))  
      ALLOCATE(BBV(LCM))  
      ALLOCATE(BCLSHA(KCM,MLM,MTM))  
      ALLOCATE(BDENBED(LCM,KBM))  
      ALLOCATE(BDENBED1(LCM,KBM))  
      ALLOCATE(BDENBEDA(LCM))  
      ALLOCATE(BDENBEDA1(LCM))  
      ALLOCATE(BDISP(KCM,KCM,LCM))  
      ALLOCATE(BDLPSQ(0:NVEGTPM))  
      ALLOCATE(BE(LCM))  
      ALLOCATE(BEDBINIT(LCM,KBM))  
      ALLOCATE(BEDBKDSV(LCM,KBM))  
      ALLOCATE(BEDDINIT(LCM,KBM))  
      ALLOCATE(BEDLINIT(LCM,KBM))  
      ALLOCATE(BEDPORSV(LCM,KBM))  
      ALLOCATE(BEDTHKSV(LCM,KBM))  
      ALLOCATE(BEDVDRSV(LCM,KBM))  
      ALLOCATE(BELAGW(LCM))  
      ALLOCATE(BELSURF(LCM))  
      ALLOCATE(BELV(LCM))  
      ALLOCATE(BELV1(LCM))  
      ALLOCATE(BELVB(LCM))  
      ALLOCATE(BETVEG(0:NVEGTPM))  
      ALLOCATE(BFBSTSUM(LCMWQ))  
      ALLOCATE(BFCODSUM(LCMWQ))  
      ALLOCATE(BFNH4SUM(LCMWQ))  
      ALLOCATE(BFNO3SUM(LCMWQ))  
      ALLOCATE(BFO2SUM(LCMWQ))  
      ALLOCATE(BFPO4SUM(LCMWQ))  
      ALLOCATE(BFSADSUM(LCMWQ))  
      ALLOCATE(BFSMTSUM(LCMWQ))  
      ALLOCATE(BH(LCM,KCM))  
      ALLOCATE(BI1(LCM))  
      ALLOCATE(BI2(LCM))  
      ALLOCATE(BLSHA(KCM,MLM))  
      ALLOCATE(BMNN(LCM,KBM+1))  
      ALLOCATE(BOD5SUM(LCMWQ,KCM))  
      ALLOCATE(BPVEG(0:NVEGTPM))  
      ALLOCATE(BQCMFD(NQCTLM))  
      ALLOCATE(BQCMFU(NQCTLM))  
      ALLOCATE(BQWRMFD(NQWRM))  
      ALLOCATE(BQWRMFU(NQWRM))  
      ALLOCATE(BSLSHA(KCM,MLM,MTM))  
      ALLOCATE(BTAUC(NTSM))  
      ALLOCATE(BTLSHA(KCM,MLM))  
      ALLOCATE(BTMP(KCM))  
      ALLOCATE(CAC(LCM,KCM))  
      !ALLOCATE(CAE(LCM,KCM))    ! PMC - NOT USED
      !ALLOCATE(CAM(LCM,KCM))    ! PMC - NOT USED
      !ALLOCATE(CAN(LCM,KCM))    ! PMC - NOT USED
      !ALLOCATE(CAP(LCM,KCM))    ! PMC - NOT USED
      !ALLOCATE(CAS(LCM,KCM))    ! PMC - NOT USED
      !ALLOCATE(CAW(LCM,KCM))    ! PMC - NOT USED
      ALLOCATE(CBE(NBBEM,2,NSTVM))  
      ALLOCATE(CBEDTOTAL(LCM))  
      ALLOCATE(CBN(NBBNM,2,NSTVM))  
      ALLOCATE(CBS(NBBSM,2,NSTVM))  
      ALLOCATE(CBW(NBBWM,2,NSTVM))  
      ALLOCATE(CC(LCM))  
      ALLOCATE(CCC(LCM))  
      ALLOCATE(CCCC(MTM))  
      ALLOCATE(CCCCHH(NCHANM))  
      ALLOCATE(CCCCHU(NCHANM))  
      ALLOCATE(CCCCHV(NCHANM))  
      ALLOCATE(CCCI(LCM))  
      ALLOCATE(CCCOS(MTM))  
      ALLOCATE(CCCOS1(MTM))  
      ALLOCATE(CCE(LCM))  
      !ALLOCATE(CCEB(LCM))       ! PMC - NOT USED
      !ALLOCATE(CCER(LCM))       ! PMC - NOT USED
      ALLOCATE(CCI(LCM))  
      ALLOCATE(CCLSHA(MTM,MTM))  
      ALLOCATE(CCN(LCM))  
      !ALLOCATE(CCNB(LCM))       ! PMC - NOT USED
      ALLOCATE(CCNHTT(LCM))  
      !ALLOCATE(CCNR(LCM))       ! PMC - NOT USED
      ALLOCATE(CCS(LCM))  
      !ALLOCATE(CCSB(LCM))       ! PMC - NOT USED
      !ALLOCATE(CCSR(LCM))       ! PMC - NOT USED
      ALLOCATE(CCW(LCM))  
      !ALLOCATE(CCWB(LCM))       ! PMC - NOT USED
      !ALLOCATE(CCWR(LCM))       ! PMC - NOT USED
      ALLOCATE(CDECAYB(LCM,KBM))  
      ALLOCATE(CDECAYW(LCM,KCM))  
      ALLOCATE(CDXDYW(LCM,0:KCM))  
      ALLOCATE(CDZD(KSM))  
      ALLOCATE(CDZF(KSM))  
      ALLOCATE(CDZKK(KCM))  
      ALLOCATE(CDZKKP(KCM))  
      ALLOCATE(CDZKMK(KCM))  
      ALLOCATE(CDZL(KSM))  
      ALLOCATE(CDZM(KSM))  
      ALLOCATE(CDZR(KSM))  
      ALLOCATE(CDZU(KSM))  
      ALLOCATE(CE(LCM))  
      !ALLOCATE(CEB(LCM))       ! PMC - NOT USED
      !ALLOCATE(CER(LCM))       ! PMC - NOT USED
      ALLOCATE(CFLCAC(LCM,KCM))  
      ALLOCATE(CFLUUU(LCM,KCM))  
      ALLOCATE(CFLVVV(LCM,KCM))  
      ALLOCATE(CFLWWW(LCM,0:KCM))  
      ALLOCATE(CFRD(NQJPM))  
      ALLOCATE(CGEB(LCM))  
      ALLOCATE(CGER(LCM))  
      ALLOCATE(CGNB(LCM))  
      ALLOCATE(CGNR(LCM))  
      ALLOCATE(CGSB(LCM))  
      ALLOCATE(CGSR(LCM))  
      ALLOCATE(CGWB(LCM))  
      ALLOCATE(CGWR(LCM))  
      ALLOCATE(CH(LCM,KCM))  
      ALLOCATE(CHANFRIC(NCHANM))  
      ALLOCATE(CHANLEN(NCHANM))  
      ALLOCATE(CHLMMAX(LCMWQ,KCM))  
      ALLOCATE(CHLMMIN(LCMWQ,KCM))  
      ALLOCATE(CHLMSUM(LCMWQ,KCM))  
      ALLOCATE(CLB(KCM))  
      ALLOCATE(CLEVAP(LCM))  
      ALLOCATE(CLOE(NBBEM,KCM,NSTVM))  
      ALLOCATE(CLON(NBBNM,KCM,NSTVM))  
      ALLOCATE(CLOS(NBBSM,KCM,NSTVM))  
      ALLOCATE(CLOUD(NDASER,NASERM))  
      ALLOCATE(CLOUDT(LCM))  
      ALLOCATE(CLOW(NBBWM,KCM,NSTVM))  
      ALLOCATE(CLSHA(MTM))  
      ALLOCATE(CLTMSR(MLTMSRM))  
      ALLOCATE(CMAX(LCM,KCM))  
      ALLOCATE(CMB(KCM))  
      ALLOCATE(CMIN(LCM,KCM))  
      ALLOCATE(CN(LCM))  
      !ALLOCATE(CNB(LCM))        ! PMC - NOT USED
      !ALLOCATE(CNR(LCM))        ! PMC - NOT USED
      ALLOCATE(CNTMSR(MLTMSRM))  
      ALLOCATE(COEFK(LCM,KBM))  
      ALLOCATE(COEFSK(LCM,KBM))  
      ALLOCATE(CON2(LCM,KCM))  
      ALLOCATE(CONGW(LCM,NSTVM))  
      ALLOCATE(CONPARB(NSTM,NTXM))  
      ALLOCATE(CONPARBC(2,NTXM))  
      ALLOCATE(CONPARW(NSTM,NTXM))  
      ALLOCATE(CONPARWC(2,NTXM))  
      ALLOCATE(CONT(LCM,KCM))  
      ALLOCATE(COSEDHID(NSTM))  
      ALLOCATE(COSMICX(LCM,KCM))  
      ALLOCATE(COSMICXN(LCM,KCM))  
      ALLOCATE(COSMICXP(LCM,KCM))  
      ALLOCATE(COSMICY(LCM,KCM))  
      ALLOCATE(COSMICYN(LCM,KCM))  
      ALLOCATE(COSMICYP(LCM,KCM))  
      ALLOCATE(COSMICZ(LCM,0:KCM))  
      ALLOCATE(COSMICZN(LCM,0:KCM))  
      ALLOCATE(COSMICZP(LCM,0:KCM))  
      ALLOCATE(CPFAM0(NPFORM,MTM))  
      ALLOCATE(CPFAM1(NPFORM,MTM))  
      ALLOCATE(CPFAM2(NPFORM,MTM))
      ALLOCATE(CQBEDLOADX(LCM,NSNM))  
      ALLOCATE(CQBEDLOADY(LCM,NSNM))  
      ALLOCATE(CQCJP(KCM,NQJPM,NSTVM))  
      ALLOCATE(CQS(KCM,NQSIJM,NSTVM))  
      ALLOCATE(CQSE(NSTVM))  
      ALLOCATE(CQWR(NQWRM,NSTVM))  
      ALLOCATE(CQWRSER(NDQWRSR,NQWRSRM,NSTVM))  
      ALLOCATE(CQWRSERT(0:NQWRSRM,NSTVM))  
      ALLOCATE(CRNUU(LCM,KCM))  
      ALLOCATE(CRNUV(LCM,KCM))  
      ALLOCATE(CRNUW(LCM,0:KCM))  
      ALLOCATE(CRNVU(LCM,KCM))  
      ALLOCATE(CRNVV(LCM,KCM))  
      ALLOCATE(CRNVW(LCM,0:KCM))  
      ALLOCATE(CRNWU(LCM,0:KCM))  
      ALLOCATE(CRNWV(LCM,0:KCM))  
      ALLOCATE(CRNWW(LCM,0:KCM))  
      ALLOCATE(CS(LCM))  
      !ALLOCATE(CSB(LCM))              ! PMC - NOT USED
      ALLOCATE(CSER(MAX(NDCSER,NDWQCSR),KCM,NCSERM2,NSTVM)) 
      ALLOCATE(CSERT(KCM,0:NCSERM,NSTVM))
      !ALLOCATE(CSERTWQ(KCM,0:NWQCSRM,NWQVM))  
      ALLOCATE(CSHIELDS50(LCM))  
      ALLOCATE(CSLSHA(MTM,MTM))  
      !ALLOCATE(CSR(LCM))              ! PMC - NOT USED
      ALLOCATE(CTAUC(NTSM))  
      ALLOCATE(CTLSHA(MTM))  
      ALLOCATE(CTMPDRY(LCM))  
      ALLOCATE(CTURBB1(LCM,KCM))  
      ALLOCATE(CTURBB2(LCM,KCM))  
      ALLOCATE(CU1(LCM,KCM))  
      ALLOCATE(CU2(LCM,KCM))  
      ALLOCATE(CUB(KCM))  
      ALLOCATE(CUDISPT(KCM,LCM))  
      ALLOCATE(CUE(LCM))  
      ALLOCATE(CUN(LCM))  
      ALLOCATE(CUPP(LCM,KBM+1))  
      ALLOCATE(CUU(LCM))  
      ALLOCATE(CVDISPT(KCM,LCM))  
      ALLOCATE(CVE(LCM))  
      ALLOCATE(CVN(LCM))  
      ALLOCATE(CVV(LCM))  
      ALLOCATE(CW(LCM))  
      !ALLOCATE(CWB(LCM))             ! PMC - NOT USED
      ALLOCATE(CWQ(LCM,KCM))  
      ALLOCATE(CWQ2(LCM,KCM))  
      ALLOCATE(CWQLOE(NBBEM,KCM,NWQVM))  
      ALLOCATE(CWQLON(NBBNM,KCM,NWQVM))  
      ALLOCATE(CWQLOS(NBBSM,KCM,NWQVM))  
      ALLOCATE(CWQLOW(NBBWM,KCM,NWQVM))  
      !ALLOCATE(CWR(LCM))              ! PMC - NOT USED
      ALLOCATE(CWRCJP(NQJPM,NSTVM))  
      ALLOCATE(CYASUM(LCMWQ,KCM))  
      ALLOCATE(DDOMAX(LCMWQ,KCM))  
      ALLOCATE(DDOMIN(LCMWQ,KCM)) 
      ALLOCATE(DEPSUM(LCM))  
      ALLOCATE(DERRB(KBM))  
      ALLOCATE(DIASUM(LCMWQ,KCM))  
      ALLOCATE(DIFTOX(NTXM))  
      ALLOCATE(DIFTOXS(NTXM))  
      ALLOCATE(DJET(NQJPM))  
      ALLOCATE(DJPER(NQJPM))  
      ALLOCATE(DLAT(LCM))  
      ALLOCATE(DLON(LCM))  
      ALLOCATE(DML(LCM,0:KCM))  
      ALLOCATE(DMVSFP(MDVSM))  
      ALLOCATE(DOOSUM(LCMWQ,KCM))  
      ALLOCATE(DOSSUM(LCMWQ,KCM))  
      ALLOCATE(DPDIFTOX(NTXM))  
      ALLOCATE(DSTRSE(LCM,KBM))  
      ALLOCATE(DTAUC(NTSM))  
      ALLOCATE(DU(LCM,KCM))  
      ALLOCATE(DV(LCM,KCM))  
      ALLOCATE(DXDJ(LCM))  
      ALLOCATE(DXFP(LCM))  
      ALLOCATE(DXIU(LCM))  
      ALLOCATE(DXIV(LCM))  
      ALLOCATE(DXP(LCM))  
      ALLOCATE(DXU(LCM))  
      ALLOCATE(DXU1(LCM,KCM))  
      ALLOCATE(DXV(LCM))  
      ALLOCATE(DXV1(LCM,KCM))  
      ALLOCATE(DXXTCA(LCM))  
      ALLOCATE(DXYIP(LCM))  
      ALLOCATE(DXYIU(LCM))  
      ALLOCATE(DXYIV(LCM))  
      ALLOCATE(DXYP(LCM))  
      ALLOCATE(DXYTCA(LCM))  
      ALLOCATE(DXYU(LCM))  
      ALLOCATE(DXYV(LCM))  
      ALLOCATE(DYDI(LCM))  
      ALLOCATE(DYE(LCM,KCM))  
      ALLOCATE(DYE1(LCM,KCM))  
      ALLOCATE(DYEAD(KCM,1))  
      ALLOCATE(DYEINIT(LCM,KCM))  
      ALLOCATE(DYELPF(LCM,KCM))  
      ALLOCATE(DYFP(LCM))  
      ALLOCATE(DYIU(LCM))  
      ALLOCATE(DYIV(LCM))  
      ALLOCATE(DYP(LCM))  
      ALLOCATE(DYU(LCM))  
      ALLOCATE(DYU1(LCM,KCM))  
      ALLOCATE(DYV(LCM))  
      ALLOCATE(DYV1(LCM,KCM))  
      ALLOCATE(DYXTCA(LCM))  
      ALLOCATE(DYYTCA(LCM))  
      ALLOCATE(DZBTR(LCM,KBM))  
      ALLOCATE(DZBTR1(LCM,KBM))  
      ALLOCATE(DZC(KCM))  
      ALLOCATE(DZG(KCM))  
      ALLOCATE(DZIC(0:KCM))  
      ALLOCATE(DZIG(0:KCM))  
      ALLOCATE(DZIGSD4(KCM))  
      ALLOCATE(DZSUM(LCMWQ,KCM))  
      ALLOCATE(DZWQ(LCMWQ))  
      ALLOCATE(EHXYS(NXYSDATM,LCM))  
      ALLOCATE(ETAUC(NTSM))  
      ALLOCATE(EVAP(NDASER,NASERM))  
      ALLOCATE(EVAPGW(LCM))  
      ALLOCATE(EVAPSW(LCM))  
      ALLOCATE(EVAPT(LCM))  
      ALLOCATE(EVPGLPF(LCM))  
      ALLOCATE(EVPSLPF(LCM))  
      ALLOCATE(FACBEDL(LCM))  
      ALLOCATE(FACSUSL(LCM))  
      ALLOCATE(FBBX(LCM,KCM))  
      ALLOCATE(FBBY(LCM,KCM))  
      ALLOCATE(FBODYFX(LCM,KCM)) !Makai DA  
      ALLOCATE(FBODYFY(LCM,KCM)) !Makai DA
      ALLOCATE(FBODYFXI(LCM)) !Makai DA  
      ALLOCATE(FBODYFYI(LCM)) !Makai DA
      ALLOCATE(FCAX(LCM,KCM))  
      ALLOCATE(FCAX1(LCM,KCM))  
      ALLOCATE(FCAX1E(LCM))  
      ALLOCATE(FCAXE(LCM))  
      ALLOCATE(FCAY(LCM,KCM))  
      ALLOCATE(FCAY1(LCM,KCM))  
      ALLOCATE(FCAY1E(LCM))  
      ALLOCATE(FCAYE(LCM))  
      ALLOCATE(FCORC(LCM))
      ! *** FOODCHAIN MODELLING OPTIONS
      IF(ISTPOCB.EQ.4)THEN
        ALLOCATE(PFPOCB(LCM,KBM))
        ALLOCATE(FPOCB(LCM,KBM))
      ELSE
        ALLOCATE(PFPOCB(1,1))
        ALLOCATE(FPOCB(1,1))
      ENDIF
      ALLOCATE(FMDUX(LCM,KCM))  
      ALLOCATE(FMDUY(LCM,KCM))  
      ALLOCATE(FMDVX(LCM,KCM))  
      ALLOCATE(FMDVY(LCM,KCM))  
      ALLOCATE(FNAVB(MLTMSRM))  
      ALLOCATE(FNAVV(MLTMSRM))  
      ALLOCATE(FNBED(MLTMSRM))  
      ALLOCATE(FNDOX(MLTMSRM))  
      ALLOCATE(FNDTBC(NTXM))  
      ALLOCATE(FNDTBF(NTXM))  
      ALLOCATE(FNDTBP(NTXM))  
      ALLOCATE(FNDTBT(NTXM))  
      ALLOCATE(FNDTWC(NTXM))  
      ALLOCATE(FNDTWF(NTXM))  
      ALLOCATE(FNDTWP(NTXM))  
      ALLOCATE(FNDTWT(NTXM))  
      ALLOCATE(FNDYE(MLTMSRM))  
      ALLOCATE(FNNHX(MLTMSRM))  
      ALLOCATE(FNQ3D(MLTMSRM))  
      ALLOCATE(FNQQE(MLTMSRM))  
      ALLOCATE(FNSAL(MLTMSRM))  
      ALLOCATE(FNSBL(MLTMSRM,NSNM))  
      ALLOCATE(FNSED(MLTMSRM))  
      ALLOCATE(FNSEL(MLTMSRM))  
      ALLOCATE(FNSFL(MLTMSRM))  
      ALLOCATE(FNSND(MLTMSRM,NSNM))  
      ALLOCATE(FNTEM(MLTMSRM))  
      ALLOCATE(FNTOC(MLTMSRM))  
      ALLOCATE(FNTOX(MLTMSRM,NTXM))  
      ALLOCATE(FNTXBC(MLTMSRM,NTXM))  
      ALLOCATE(FNTXBF(MLTMSRM,NTXM))  
      ALLOCATE(FNTXBP(MLTMSRM,NTXM))  
      ALLOCATE(FNTXBT(MLTMSRM,NTXM))  
      ALLOCATE(FNTXWC(MLTMSRM,NTXM))  
      ALLOCATE(FNTXWF(MLTMSRM,NTXM))  
      ALLOCATE(FNTXWP(MLTMSRM,NTXM))  
      ALLOCATE(FNTXWT(MLTMSRM,NTXM))  
      ALLOCATE(FNU3D(MLTMSRM))  
      ALLOCATE(FNUVE(MLTMSRM))  
      ALLOCATE(FNUVT(MLTMSRM))  
      ALLOCATE(FNV3D(MLTMSRM))  
      ALLOCATE(FP(LCM))  
      ALLOCATE(FP1(LCM))  
      ALLOCATE(FPB(LCM))  
      ALLOCATE(FPGXE(LCM))  
      ALLOCATE(FPGYE(LCM))  
      ALLOCATE(PMCTESTX(10,LCM))  
      ALLOCATE(PMCTESTY(10,LCM))  
      ALLOCATE(FPOCBST(NSTM,NTXM))  
      ALLOCATE(FPOCWST(NSTM,NTXM))  
      ALLOCATE(FPR(LCM))  
      ALLOCATE(FPROX(0:KCM))  
      ALLOCATE(FPRT(LCM))  
      ALLOCATE(FPTMP(LCM))  
      ALLOCATE(FQC(LCM,KCM))  
      ALLOCATE(FRACCOH(LCM,KBM))  
      ALLOCATE(FRACNON(LCM,KBM))  
      ALLOCATE(FSALASM(NDDAM,NLDAM))  
      ALLOCATE(FSCORTBCV(LCM))
      ALLOCATE(FTEMASM(NDDAM,NLDAM))  
      ALLOCATE(FUDISP(KCM,LCM))  
      ALLOCATE(FUHDYATV(LCM,KCM))  
      ALLOCATE(FUHDYE(LCM))  
      ALLOCATE(FUHU(LCM,KCM))  
      ALLOCATE(FUHV(LCM,KCM))  
      ALLOCATE(FVDISP(KCM,LCM))  
      ALLOCATE(FVHDXE(LCM))  
      ALLOCATE(FVHU(LCM,KCM))  
      ALLOCATE(FVHV(LCM,KCM))  
      ALLOCATE(FVOLASM(NDDAM,NLDAM))  
      ALLOCATE(FWQQ(LCM,KCM))  
      ALLOCATE(FWQQL(LCM,KCM))  
      ALLOCATE(FWU(LCM,0:KCM))  
      ALLOCATE(FWV(LCM,0:KCM))  
      ALLOCATE(FX(LCM,KCM))  
      ALLOCATE(FXE(LCM))
      ALLOCATE(FXVEG(LCM,KCM))  
      ALLOCATE(FXVEGE(LCM))  
      ALLOCATE(FXWAVE(LCM,KCM))  
      ALLOCATE(FY(LCM,KCM))  
      ALLOCATE(FYE(LCM))  
      ALLOCATE(FYVEG(LCM,KCM))  
      ALLOCATE(FYVEGE(LCM))  
      ALLOCATE(FYWAVE(LCM,KCM))  
      ALLOCATE(FZU(0:KCM))  
      ALLOCATE(FZV(0:KCM))  
      ALLOCATE(GAMB(KCM))  
      ALLOCATE(GAMTMP(LCM,KBM+1))  
      ALLOCATE(GAMVEG(0:NVEGTPM))  
      ALLOCATE(GLSHA(MGM,MGM))  
      ALLOCATE(GRNSUM(LCMWQ,KCM))  
      ALLOCATE(GWCSER(NDGWSER,NSTVM,NGWSERM))  
      ALLOCATE(GWCSERT(0:NGWSERM,NSTVM))  
      ALLOCATE(GWFAC(LCM))  
      ALLOCATE(GWLPF(LCM))  
      ALLOCATE(GWSER(NDGWSER,NGWSERM))  
      ALLOCATE(GWSERT(0:NGWSERM))  
      ALLOCATE(H1P(LCM))  
      ALLOCATE(H1U(LCM))  
      ALLOCATE(H1UI(LCM))  
      ALLOCATE(H1V(LCM))  
      ALLOCATE(H1VI(LCM))  
      ALLOCATE(H2P(LCM))  
      ALLOCATE(H2WQ(LCM))  
      ALLOCATE(HBED(LCM,KBM))  
      ALLOCATE(HBED1(LCM,KBM))  
      ALLOCATE(HBEDA(LCM))  
      ALLOCATE(HBEDA1(LCM))  
      ALLOCATE(HCTLDA(NQCTTM))  
      ALLOCATE(HCTLDM(NQCTTM))  
      ALLOCATE(HCTLUA(NQCTTM))  
      ALLOCATE(HCTLUM(NQCTTM))  
      ALLOCATE(HDFUFX(LCM))
      ALLOCATE(HDFUFY(LCM))
      ALLOCATE(HDFUF(LCM))
      ALLOCATE(HDIFCTD(NDQCLT,NQCTTM))  
      ALLOCATE(HDIFCTL(NDQCLT,NQCTTM))  
      ALLOCATE(HGDH(LCM))  
      ALLOCATE(HLPF(LCM))  
      ALLOCATE(HLRPD(LCGLM,NGLM))  
      ALLOCATE(HLRPDF(LCGLM,KCM,NGLM))  
      ALLOCATE(HMCW(LCM))  
      ALLOCATE(HMP(LCM))  
      ALLOCATE(HMPW(LCM))  
      ALLOCATE(HMU(LCM))  
      ALLOCATE(HMUW(LCM))  
      ALLOCATE(HMV(LCM))  
      ALLOCATE(HMVW(LCM))  
      ALLOCATE(HP(LCM))  
      ALLOCATE(HPI(LCM))  
      ALLOCATE(HPTMP(LCM))  
      ALLOCATE(HPVEG(0:NVEGTPM))  
      ALLOCATE(HRU(LCM))  
      ALLOCATE(HRUO(LCM))  
      ALLOCATE(HRV(LCM))  
      ALLOCATE(HRVO(LCM))  
      !ALLOCATE(HRXYU(LCM))   ! PMC - NOT USED
      !ALLOCATE(HRXYV(LCM))   ! PMC - NOT USED
      ALLOCATE(HTMP(LCM))  
      ALLOCATE(HU(LCM))  
      ALLOCATE(HUDRY(LCM))  
      ALLOCATE(HUI(LCM))  
      ALLOCATE(HUTMP(LCM))  
      ALLOCATE(HUWET(LCM))  
      ALLOCATE(HV(LCM))  
      ALLOCATE(HVDRY(LCM))  
      ALLOCATE(HVI(LCM))  
      ALLOCATE(HVTMP(LCM))  
      ALLOCATE(HVWET(LCM))  
      ALLOCATE(HWQ(LCM))  
      ALLOCATE(HWQI(LCM))  
      ALLOCATE(HYDCN(LCM,KBM))  
      ALLOCATE(IACTLR(NGLM))  
      ALLOCATE(IAIJ(IGM,JGM))  
      ALLOCATE(IAKL(KPCM,LCM))  
      ALLOCATE(IAP(KPCM))  
      ALLOCATE(IBENMAP(LCMWQ,2))  
      ALLOCATE(IBLTAUC(NSTM))  
      ALLOCATE(ICALJP(NQJPM))  
      ALLOCATE(ICBE(NBBEM))  
      ALLOCATE(ICBN(NBBNM))  
      ALLOCATE(ICBS(NBBSM))  
      ALLOCATE(ICBW(NBBWM))  
      ALLOCATE(ICCDA(NLDAM))
      ALLOCATE(ICDA(NLDAM))  
      ALLOCATE(ICFLMP(LCM))  
      ALLOCATE(ICORDXV(LCM))  
      ALLOCATE(ICORDYU(LCM))  
      ALLOCATE(ICPSL(NWQPSM))  
      ALLOCATE(ICSMTS(NTSSMVM,NSMTSM))  
      ALLOCATE(ICWQTS(0:NWQVM,NWQTSM))  
      ALLOCATE(IDRICM(2*LCM*KCM))  
      ALLOCATE(IJCT(-1:ICM,-1:JCM)) !Indices start at -1 to avoid exceeding aray bounds in CELLMAP when LNWC, LNEC, LSEC, LSWC are specified in CELLMAP and SETBCS
      ALLOCATE(IJCTLT(-1:ICM,-1:JCM))  
      ALLOCATE(IL(LCM))  
      ALLOCATE(ILLSHA(MLM))  
      ALLOCATE(ILLT(LCM))  
      ALLOCATE(ILRPD(LCGLM))  
      ALLOCATE(ILTMSR(MLTMSRM))  
      ALLOCATE(IMASKDRY(LCM))  
      ALLOCATE(IMDCHH(NCHANM))  
      ALLOCATE(IMDCHU(NCHANM))  
      ALLOCATE(IMDCHV(NCHANM))  
      ALLOCATE(IMWQZT(LCMWQ))  
      ALLOCATE(IMWQZT1(LCMWQ))  
      ALLOCATE(IMWQZT2(LCMWQ))  
      ALLOCATE(INPNS(JCM))  
      ALLOCATE(IOUTJP(NQJPM))  
      ALLOCATE(IPBE(NPBEM))  
      ALLOCATE(IPBN(NPBNM))  
      ALLOCATE(IPBS(NPBSM))  
      ALLOCATE(IPBW(NPBWM))  
      ALLOCATE(IQCAX(NQCTLM))  
      ALLOCATE(IQCTLD(NQCTLM))  
      ALLOCATE(IQCTLU(NQCTLM))  
      ALLOCATE(IQJP(NQJPM))  
      ALLOCATE(IQS(NQSIJM))  
      ALLOCATE(IQWRD(NQWRM))  
      ALLOCATE(IQWRU(NQWRM))  
      ALLOCATE(IRELH(NASERM))  
      ALLOCATE(IROUSE(NSTM))
      ALLOCATE(ISBDLD(NSTM))  
      ALLOCATE(ISCDRY(LCM))  
      ALLOCATE(ISDBLDIR(LCM))
      ALLOCATE(ISDIFBW(NTXM))  
      ALLOCATE(ISDJP(NQJPM))  
      ALLOCATE(ISEDBU(NSCM))  
      ALLOCATE(ISEDSCOR(NSTM))  
      ALLOCATE(ISEDWU(NSTM))  
      ALLOCATE(ISENT(NQJPM))  
      ALLOCATE(ISLTAUC(NSTM))  
C     ALLOCATE(ISLUSED(LCM))  
      ALLOCATE(ISMHYPD(LCMWQ))  
      ALLOCATE(ISMT(LCMWQ))  
      ALLOCATE(ISMZMAP(LCMWQ))  
      ALLOCATE(ISNDBU(NSNM))  
      ALLOCATE(ISNDEQ(NSTM))  
      ALLOCATE(ISNDM1(NSTM))
      ALLOCATE(ISNDM2(NSTM))
      ALLOCATE(ISNDWU(NSNM))  
      ALLOCATE(ISPBE(NPBEM))  
      ALLOCATE(ISPBN(NPBNM))  
      ALLOCATE(ISPBS(NPBSM))  
      ALLOCATE(ISPBW(NPBWM))  
      ALLOCATE(ISPNS(JCM))  
      ALLOCATE(ISPV(LCM,10))  
      !ALLOCATE(ISRED(LCM))      ! PMC - NOT USED
      ALLOCATE(ISS3DSED(NSCM))  
      ALLOCATE(ISS3DSND(NSNM))  
      ALLOCATE(ISS3DTOX(NTXM))  
      ALLOCATE(ISTJP(NQJPM))  
      ALLOCATE(ISTOC(NTXM))  
      ALLOCATE(ISTOXR(NTXM))  
      ALLOCATE(ISUDPC(NCHANM))  
      ALLOCATE(ISWDINT(NWSERM))  
      ALLOCATE(ITOXBU(NTXM))  
      ALLOCATE(ITOXWU(NTXM))  
      ALLOCATE(ITPCDA(NLDAM))
      ALLOCATE(ITXBDUT(NTXM))  
      ALLOCATE(ITXINT(NTXM))  
      ALLOCATE(ITXPARB(NSTM,NTXM))  
      ALLOCATE(ITXPARBC(2,NTXM))  
      ALLOCATE(ITXPARW(NSTM,NTXM))  
      ALLOCATE(ITXPARWC(2,NTXM))  
      ALLOCATE(IUBE(NUBEM))  
      ALLOCATE(IUBW(NUBWM))  
      ALLOCATE(IUPCJP(NQJPM))  
      ALLOCATE(IVBN(NVBNM))  
      ALLOCATE(IVBS(NVBSM))  
      ALLOCATE(IVPV(LCM,10))  
      ALLOCATE(IVSFP(MTVSM))  
      ALLOCATE(IWGG(NWGGM))  
      ALLOCATE(IWQCBE(NBBEM))  
      ALLOCATE(IWQCBN(NBBNM))  
      ALLOCATE(IWQCBS(NBBSM))  
      ALLOCATE(IWQCBW(NBBWM))  
      ALLOCATE(IWQKA(NWQZM))  
      ALLOCATE(IWQOBE(NBBEM,NWQVM))  
      ALLOCATE(IWQOBN(NBBNM,NWQVM))  
      ALLOCATE(IWQOBS(NBBSM,NWQVM))  
      ALLOCATE(IWQOBW(NBBWM,NWQVM))  
      ALLOCATE(IWQOBE_GL(NBBEM,NWQVM))  
      ALLOCATE(IWQOBN_GL(NBBNM,NWQVM))  
      ALLOCATE(IWQOBS_GL(NBBSM,NWQVM))  
      ALLOCATE(IWQOBW_GL(NBBWM,NWQVM)) 
      ALLOCATE(IWQPSC(LCMWQ,KCM))  
      ALLOCATE(IWQPSV(LCMWQ,KCM))  
      ALLOCATE(IWQT(LCMWQ))  
      ALLOCATE(IWQZMAP(LCMWQ,KCM))  
      ALLOCATE(IWRSPB(NSTM))  
      ALLOCATE(JCBE(NBBEM))  
      ALLOCATE(JCBN(NBBNM))  
      ALLOCATE(JCBS(NBBSM))  
      ALLOCATE(JCBW(NBBWM))  
      ALLOCATE(JCCDA(NLDAM))
      ALLOCATE(JCDA(NLDAM))  
      ALLOCATE(JCPSL(NWQPSM))  
      ALLOCATE(JL(LCM))  
      ALLOCATE(JLLSHA(MLM))  
      ALLOCATE(JLLT(LCM))  
      ALLOCATE(JLRPD(LCGLM))  
      ALLOCATE(JLTMSR(MLTMSRM))  
      ALLOCATE(JMDCHH(NCHANM))  
      ALLOCATE(JMDCHU(NCHANM))  
      ALLOCATE(JMDCHV(NCHANM))  
      ALLOCATE(JNPNS(JCM))  
      ALLOCATE(JPBE(NPBEM))  
      ALLOCATE(JPBN(NPBNM))  
      ALLOCATE(JPBS(NPBSM))  
      ALLOCATE(JPBW(NPBWM))  
      ALLOCATE(JQCAX(NQCTLM))  
      ALLOCATE(JQCTLD(NQCTLM))  
      ALLOCATE(JQCTLU(NQCTLM))  
      ALLOCATE(JQJP(NQJPM))  
      ALLOCATE(JQS(NQSIJM))  
      ALLOCATE(JQWRD(NQWRM))  
      ALLOCATE(JQWRU(NQWRM))  
      ALLOCATE(JSPNS(JCM))  
      ALLOCATE(JSPV(LCM,10))  
      ALLOCATE(JSS3DSED(NSCM))  
      ALLOCATE(JSS3DSND(NSNM))  
      ALLOCATE(JSS3DTOX(NTXM))  
      ALLOCATE(JUBE(NUBEM))  
      ALLOCATE(JUBW(NUBWM))  
      ALLOCATE(JUNTPX(NJUNXM))  
      ALLOCATE(JUNTPY(NJUNYM))  
      ALLOCATE(JUPCJP(NQJPM))  
      ALLOCATE(JVBN(NVBNM))  
      ALLOCATE(JVBS(NVBSM))  
      ALLOCATE(JVPV(LCM,10))  
      ALLOCATE(JVSFP(MTVSM))  
      ALLOCATE(JWGG(NWGGM))  
      ALLOCATE(JWQCBE(NBBEM))  
      ALLOCATE(JWQCBN(NBBNM))  
      ALLOCATE(JWQCBS(NBBSM))  
      ALLOCATE(JWQCBW(NBBWM))  
      ALLOCATE(KBT(LCM))
      ALLOCATE(KCEFDC(LCM*KCM))  
      ALLOCATE(KCPSL(NWQPSM))  
      ALLOCATE(KEFFJP(NQJPM))  
      ALLOCATE(KFEFDC(2*LCM*KCM))  
      ALLOCATE(KPB(LCM))  
      ALLOCATE(KPS(LCM))  
      ALLOCATE(KQJP(NQJPM))  
      ALLOCATE(KQWRD(NQWRM))  
      ALLOCATE(KQWRU(NQWRM))  
      ALLOCATE(KUPCJP(NQJPM))  
      ALLOCATE(KUPW(LCM,KCM))  
      ALLOCATE(KWBU(LCM,0:KCM))  
      ALLOCATE(KWBV(LCM,0:KCM))  
      ALLOCATE(KWU(LCM,0:KCM))  
      ALLOCATE(KWV(LCM,0:KCM))  
      ALLOCATE(KWW(LCM,0:KCM))  
      !ALLOCATE(LBC(LCM))       ! PMC - NOT USED
      ALLOCATE(LBERC(LCM*KCM))  
      ALLOCATE(LBNRC(LCM*KCM))  
      ALLOCATE(LBSRC(LCM))  
      ALLOCATE(LBWRC(LCM))  
      ALLOCATE(LCBE(NBBEM))  
      ALLOCATE(LCBN(NBBNM))  
      ALLOCATE(LCBS(NBBSM))  
      ALLOCATE(LCBW(NBBWM))  
      ALLOCATE(LCDA(NLDAM))  
      ALLOCATE(LCEFDC(LCM*KCM))  
      ALLOCATE(LCHNC(KCM*LCM,10))  
      ALLOCATE(LCONSOL(LCM))  
      ALLOCATE(LCT(LCM))  
      ALLOCATE(LCTLT(LCM))  
      ALLOCATE(LFEFDC(2*LCM*KCM))  
      ALLOCATE(LIJ(0:GNX,0:GNY))  
      ALLOCATE(LIJLT(0:ICM,0:JCM)) !Start index at 0 to avoid exceeding array bounds in CELLMAP around line 260 
      ALLOCATE(LJUNX(NJUNXM))  
      ALLOCATE(LJUNY(NJUNYM))  
      ALLOCATE(LLBC(LCM))  
      ALLOCATE(LLRC(LCM))  
      ALLOCATE(LLSHA(MLM))  
      ALLOCATE(LMASKDRY(LCM))  
      ALLOCATE(LMDCHH(NCHANM))  
      ALLOCATE(LMDCHU(NCHANM))  
      ALLOCATE(LMDCHV(NCHANM))  
      ALLOCATE(LNC(LCM))  
      ALLOCATE(LNCLT(LCM))  
      ALLOCATE(LNEC(LCM))  
      ALLOCATE(LNWC(LCM))  
      ALLOCATE(LOBCS(LCM))
      ALLOCATE(LBCS(LCM*KCM))
      ALLOCATE(LORDER(LCM))  
      ALLOCATE(LPBE(NPBEM))  
      ALLOCATE(LPBN(NPBNM))  
      ALLOCATE(LPBS(NPBSM))  
      ALLOCATE(LPBW(NPBWM))  
      ALLOCATE(LQCTLD(NQCTLM))  
      ALLOCATE(LQCTLU(NQCTLM))  
      ALLOCATE(LQS(NQSIJM))  
      ALLOCATE(LQWRD(NQWRM))  
      ALLOCATE(LQWRU(NQWRM))  
      !ALLOCATE(LRC(LCM))      ! PMC - NOT USED
      !ALLOCATE(LREBC(LCM))    ! PMC - NOT USED
      !ALLOCATE(LRNBC(LCM))    ! PMC - NOT USED
      !ALLOCATE(LRSBC(LCM))    ! PMC - NOT USED
      !ALLOCATE(LRWBC(LCM))    ! PMC - NOT USED
      ALLOCATE(LSBLBCD(LCM))  
      ALLOCATE(LSBLBCU(LCM))  
      ALLOCATE(LSC(LCM))  
      ALLOCATE(LSCLT(LCM))  
      ALLOCATE(LSEC(LCM))  
      ALLOCATE(LSHAB(MLM))  
      ALLOCATE(LSHAP(MLM))  
      ALLOCATE(LSHAU(MLM))  
      ALLOCATE(LSHAUE(MLM))  
      ALLOCATE(LSMTS(NSMTSM))  
      ALLOCATE(LSWC(LCM))  
      ALLOCATE(LUBE(NUBEM))  
      ALLOCATE(LUBW(NUBWM))  
      ALLOCATE(LUPU(LCM,KCM))  
      ALLOCATE(LUPV(LCM,KCM))  
      ALLOCATE(LUU(LCM,KCM))  
      ALLOCATE(LUV(LCM,KCM))  
      ALLOCATE(LUW(LCM,0:KCM))  
      ALLOCATE(LUWV(LCM,KCM))  
      ALLOCATE(LUWW(LCM,0:KCM))  
      ALLOCATE(LVBN(NVBNM))  
      ALLOCATE(LVBS(NVBSM))  
      ALLOCATE(LVSU(LCM,KCM))  
      ALLOCATE(LVSW(LCM,0:KCM))  
      !ALLOCATE(LVU(LCM,KCM))    ! PMC - NOT USED
      !ALLOCATE(LVV(LCM,KCM))    ! PMC - NOT USED
      !ALLOCATE(LVW(LCM,0:KCM))  ! PMC - NOT USED
      ALLOCATE(LWQTS(IWQTS))
      ALLOCATE(LWGG(NWGGM))  
      ALLOCATE(MASER(NASERM))  
      ALLOCATE(MATLAST(NASERM))  
      ALLOCATE(MCNTLR(NGLM))  
      ALLOCATE(MCSER(NCSERM,NSTVM))  
      ALLOCATE(MCTLAST(NCSERM,NSTVM))  
      ALLOCATE(MFDCHZ(LCM))
      ALLOCATE(MDCHTYP(NCHANM))  
      ALLOCATE(MGWSER(NGWSERM))  
      ALLOCATE(MGWTLAST(NGWSERM))
      ALLOCATE(MPSER(NPSERM))  
      ALLOCATE(MPTLAST(NPSERM))  
      ALLOCATE(MQCTL(NQCTTM))  
      ALLOCATE(MQSER(NQSERM))  
      ALLOCATE(MQTLAST(NQSERM))  
      ALLOCATE(MQWRSR(NQWRSRM))  
      ALLOCATE(MQWRTLST(NQWRSRM))  
      ALLOCATE(MTMSRA(MLTMSRM))  
      ALLOCATE(MTMSRC(MLTMSRM))  
      ALLOCATE(MTMSRP(MLTMSRM))  
      ALLOCATE(MTMSRQ(MLTMSRM))  
      ALLOCATE(MTMSRQE(MLTMSRM))  
      ALLOCATE(MTMSRU(MLTMSRM))  
      ALLOCATE(MTMSRUE(MLTMSRM))  
      ALLOCATE(MTMSRUT(MLTMSRM))  
      ALLOCATE(MTSCUR(NTSSTSPM))  
      ALLOCATE(MTSSTSP(NTSSTSPM))  
      ALLOCATE(MVEGL(LCM))  
      ALLOCATE(MVEGSER(NVEGSERM))  
      ALLOCATE(MVEGTLAST(NVEGSERM))  
      ALLOCATE(MVPSL(NWQPSM))  
      !ALLOCATE(MWQCSR(NWQCSRM,NWQVM))  
      ALLOCATE(MWQCTLT(NWQCSRM,NWQVM))  
      ALLOCATE(MWQPSR(NWQPSRM))  
      ALLOCATE(MWQPTLT(NWQPSRM))  
      ALLOCATE(MWSER(NWSERM))  
      ALLOCATE(MWTLAST(NWSERM))  
      ALLOCATE(NATDRY(LCM))  
      ALLOCATE(NCHNC(0:KCM*LCM))  
      ALLOCATE(NCSER(NSTVM))  
      ALLOCATE(NCSERA(NLDAM,NSTVM))
      ALLOCATE(NCSERE(NBBEM,NSTVM))  
      ALLOCATE(NCSERJP(NQJPM,NSTVM))  
      ALLOCATE(NCSERN(NBBNM,NSTVM))  
      ALLOCATE(NCSERQ(NQSIJM,NSTVM))  
      ALLOCATE(NCSERS(NBBSM,NSTVM))  
      ALLOCATE(NCSERW(NBBWM,NSTVM))  
      ALLOCATE(NDWHT(LCM,NWSERM))  
      ALLOCATE(NGWSL(LCM))  
      ALLOCATE(NJEL(NQJPM))  
      ALLOCATE(NJPMX(NQJPM))  
      ALLOCATE(NLOE(NBBEM,KCM,NSTVM))  
      ALLOCATE(NLON(NBBNM,KCM,NSTVM))  
      ALLOCATE(NLOS(NBBSM,KCM,NSTVM))  
      ALLOCATE(NLOW(NBBWM,KCM,NSTVM))  
      ALLOCATE(NLRPDL(LCGLM))  
      ALLOCATE(NLRPDRT(NGLM))  
      ALLOCATE(NPORTJP(NQJPM))  
      ALLOCATE(NPSERE(NPBEM))  
      ALLOCATE(NPSERN(NPBNM))  
      ALLOCATE(NPSERS(NPBSM))  
      ALLOCATE(NPSERW(NPBWM))  
      ALLOCATE(NQCMFD(NQCTLM))  
      ALLOCATE(NQCMFU(NQCTLM))  
      ALLOCATE(NQCMUL(NQCTLM))  
      ALLOCATE(NQCTLQ(NQCTLM))  
      ALLOCATE(NQCTYP(NQCTLM))  
      ALLOCATE(NQSERJP(NQJPM))  
      ALLOCATE(NQSERQ(NQSIJM))  
      ALLOCATE(NQSMF(NQSIJM))  
      ALLOCATE(NQSMUL(NQSIJM))  
      ALLOCATE(NQWRMFD(NQWRM))  
      ALLOCATE(NQWRMFU(NQWRM))  
      ALLOCATE(NQWRSERJP(NQJPM))  
      ALLOCATE(NQWRSERQ(NQWRM))  
      ALLOCATE(NSP2(NTXM))  
      ALLOCATE(NTSCRE(NBBEM))  
      ALLOCATE(NTSCRN(NBBNM))  
      ALLOCATE(NTSCRS(NBBSM))  
      ALLOCATE(NTSCRW(NBBWM))  
      ALLOCATE(NTSSSS(MLTMSRM))  
      ALLOCATE(NTVSFP(MTVSM))  
      ALLOCATE(NUDJP(NQJPM))  
      ALLOCATE(NUDJPC(NQJPM))  
      ALLOCATE(NUMTMP(LCGLM,KCM))  
      ALLOCATE(NUTMP(LCGLM,KCM))  
      ALLOCATE(NVEGSERV(0:NVEGTPM))  
      !ALLOCATE(NWQLOE(NBBEM,KCM,NWQVM))  ! PMC - NOT USED
      !ALLOCATE(NWQLON(NBBNM,KCM,NWQVM))  ! PMC - NOT USED
      !ALLOCATE(NWQLOS(NBBSM,KCM,NWQVM))  ! PMC - NOT USED
      !ALLOCATE(NWQLOW(NBBWM,KCM,NWQVM))  ! PMC - NOT USED
      ALLOCATE(NXYSDAT(LCM))  
      ALLOCATE(NZPRJP(NQJPM))  
      ALLOCATE(O2WQ(LCM))  
      ALLOCATE(P(LCM))  
      ALLOCATE(P1(LCM))  
      ALLOCATE(P1DT1(MLM))  
      ALLOCATE(PAM(LCM))  
      ALLOCATE(PATM(NDASER,NASERM))  
      ALLOCATE(PATMT(LCM))  
      !ALLOCATE(PBLK(LCM))    ! PMC - NOT USED
      !ALLOCATE(PBTMP(LCM))   ! PMC - NOT USED
      ALLOCATE(PCBE(NPBEM,MTM))  
      ALLOCATE(PCBN(NPBNM,MTM))  
      ALLOCATE(PCBS(NPBSM,MTM))  
      ALLOCATE(PCBW(NPBWM,MTM))  
      ALLOCATE(PCG(LCM))  
      !ALLOCATE(PCGE(LCM))    ! PMC - NOT USED
      !ALLOCATE(PCGN(LCM))    ! PMC - NOT USED
      !ALLOCATE(PCGS(LCM))    ! PMC - NOT USED
      !ALLOCATE(PCGW(LCM))    ! PMC - NOT USED
      ALLOCATE(PCLSHA(MLM,MTM))  
      ALLOCATE(PDIFTOX(NTXM))  
      !ALLOCATE(PE(LCM))      ! PMC - NOT USED
      ALLOCATE(PEXP(LCM,NSNM))  
      ALLOCATE(PFAM(NPFORM,MTM))  
      ALLOCATE(PFAM1(NPFORM,MTM))  
      ALLOCATE(PFAM2(NPFORM,MTM))  
      ALLOCATE(PFPH(NPFORM,MTM))  
      ALLOCATE(PFPH1(NPFORM,MTM))  
      ALLOCATE(PFPH2(NPFORM,MTM))  
      ALLOCATE(PHASEE(MTM))  
      ALLOCATE(PHASEU(MTM))  
      ALLOCATE(PHASEV(MTM))  
      ALLOCATE(PHID(LCM,NSNM))  
      ALLOCATE(PHJET(NQJPM))  
      ALLOCATE(PLSHA(MLM))  
      ALLOCATE(PMDCH(NCHANM))  
      ALLOCATE(PN(LCM))  
      ALLOCATE(PNHYDS(LCM,KCM))  
      ALLOCATE(PO4DWQ(LCM))  
      ALLOCATE(PO4DWQSUM(LCMWQ,KCM))  
      ALLOCATE(POCMAX(LCMWQ,KCM))  
      ALLOCATE(POCMIN(LCMWQ,KCM))  
      ALLOCATE(POCSUM(LCMWQ,KCM))  
      ALLOCATE(PONMAX(LCMWQ,KCM))  
      ALLOCATE(PONMIN(LCMWQ,KCM))  
      ALLOCATE(PONSUM(LCMWQ,KCM))  
      ALLOCATE(POPMAX(LCMWQ,KCM))  
      ALLOCATE(POPMIN(LCMWQ,KCM))  
      ALLOCATE(POPSUM(LCMWQ,KCM))  
      ALLOCATE(PORBED(LCM,KBM))  
      ALLOCATE(PORBED1(LCM,KBM))  
      !ALLOCATE(PORBEDA(LCM))      ! PMC - NOT USED
      !ALLOCATE(PORBEDA1(LCM))     ! PMC - NOT USED
      ALLOCATE(PPH(LCM))  
      !ALLOCATE(PRED(LCM))         ! PMC - NOT USED
      !ALLOCATE(PRESE(LCM,KBM))    ! PMC - NOT USED
      !ALLOCATE(PRESH(LCM,KBM))    ! PMC - NOT USED
      !ALLOCATE(PREST(LCM,KBM))    ! PMC - NOT USED
      ALLOCATE(PRODSUM(LCMWQ,KCM,4))  
      !ALLOCATE(PS(LCM))           ! PMC - NOT USED
      ALLOCATE(PSBE(NPBEM,MTM))  
      ALLOCATE(PSBN(NPBNM,MTM))  
      ALLOCATE(PSBS(NPBSM,MTM))  
      ALLOCATE(PSBW(NPBWM,MTM))  
      ALLOCATE(PSER(NDPSER,NPSERM))  
      ALLOCATE(PSERT(0:NPSERM))  
      ALLOCATE(PSHADE(LCM))  
      ALLOCATE(PSLSHA(MLM,MTM))  
      ALLOCATE(PTLSHA(MLM))  
      ALLOCATE(PTMP(LCM))  
      ALLOCATE(PVEGX(0:NVEGTPM))  
      ALLOCATE(PVEGY(0:NVEGTPM))  
      ALLOCATE(PVEGZ(0:NVEGTPM))  
      !ALLOCATE(PW(LCM))           ! PMC - NOT USED
      !ALLOCATE(QBEDS(LCM))        ! PMC - NOT USED
      !ALLOCATE(QBEDW(LCM))        ! PMC - NOT USED
      ALLOCATE(QCELLCTR(LCM))  
      ALLOCATE(QCH(LCM,0:KCM))  
      ALLOCATE(QCHANU(NCHANM))  
      ALLOCATE(QCHANUN(NCHANM))  
      ALLOCATE(QCHANV(NCHANM))  
      ALLOCATE(QCHANVN(NCHANM))  
      ALLOCATE(QCHNULP(NCHANM))  
      ALLOCATE(QCHNVLP(NCHANM))  
      ALLOCATE(QCOEF(LCM,0:KBM))  
      ALLOCATE(QCTL(NDQCLT,NDQCLT2,KCM,NQCTTM))  
      ALLOCATE(QCTLST(KCM,NQCTLM))  
      ALLOCATE(QCTLSTO(KCM,NQCTLM))  
      ALLOCATE(QCTLT(KCM,0:NQCTLM))  
      ALLOCATE(QCTLTLP(KCM,NQCTLM))  
      ALLOCATE(QCTLTO(KCM,0:NQCTLM))  
      ALLOCATE(QDWASTE(LCM))  
      !ALLOCATE(QEVAP(LCM))        ! PMC - NOT USED
      ALLOCATE(QFACTOR(NQSIJM))  
      ALLOCATE(QGW(LCM))  
      ALLOCATE(QJPENT(KCM,NQJPM))  
      ALLOCATE(QJPENTT(NQJPM))  
      ALLOCATE(QMORPH(LCM))  
      ALLOCATE(QQ(LCM,0:KCM))  
      ALLOCATE(QQ1(LCM,0:KCM))  
      ALLOCATE(QQ2(LCM,0:KCM))  
      ALLOCATE(QQSQR(LCM,0:KCM))  
      ALLOCATE(QQCJP(NQJPM))  
      ALLOCATE(QQI(LCM))  
      ALLOCATE(QQL(LCM,0:KCM))  
      ALLOCATE(QQL1(LCM,0:KCM))  
      ALLOCATE(QQL2(LCM,0:KCM))  
      !ALLOCATE(QQVSE(LCM))        ! PMC - NOT USED
      ALLOCATE(QQWC(LCM))  
      ALLOCATE(QQWCR(LCM))  
      ALLOCATE(QQWV1(LCM))  
      ALLOCATE(QQWV2(LCM))  
      ALLOCATE(QQWV3(LCM))  
      ALLOCATE(QRAIN(LCM))  
      ALLOCATE(QSBDLDIN(LCM,NSNM))  
      ALLOCATE(QSBDLDOT(LCM,NSNM))  
      ALLOCATE(QSBDLDP(LCM))  
      ALLOCATE(QSBDLDX(LCM,NSNM))  
      ALLOCATE(QSBDLDY(LCM,NSNM))  
      ALLOCATE(QSBDTOP(LCM))  
      ALLOCATE(QSEDBED(LCM,KBM,NSTM))  
      ALLOCATE(QSEDBED1(LCM,KBM,NSTM))  
      ALLOCATE(QSEDBEDA(LCM,NSTM))  
      ALLOCATE(QSEDBEDA1(LCM,NSTM))  
      ALLOCATE(QSER(NDQSER,KCM,NQSERM))
      ALLOCATE(QSERCELL(KCM,0:NQSIJM)) 
      ALLOCATE(QSERT(KCM,0:NQSERM))  
      ALLOCATE(QSRTLPN(KCM,NQSERM))  
      ALLOCATE(QSRTLPP(KCM,NQSERM))  
      ALLOCATE(QSS(KCM,NQSIJM))  
      ALLOCATE(QSSDPA(LCM))  
      ALLOCATE(QSUM(LCM,KCM))  
      ALLOCATE(QSUME(LCM))  
      ALLOCATE(QSUMELPF(LCM))  
      !ALLOCATE(QSUMELPN(LCM))       ! PMC - NOT USED
      !ALLOCATE(QSUMELPP(LCM))       ! PMC - NOT USED
      !ALLOCATE(QSUMEN(LCM))         ! PMC - NOT USED
      ALLOCATE(QSUM1E(LCM))  
      ALLOCATE(QSUMLPF(LCM,KCM))  
      !ALLOCATE(QSUMLPN(LCM,KCM))    ! PMC - NOT USED
      !ALLOCATE(QSUMLPP(LCM,KCM))    ! PMC - NOT USED
      !ALLOCATE(QSUMN(LCM,KCM))      ! PMC - NOT USED
      !ALLOCATE(QSUMP(LCM,KCM))      ! PMC - NOT USED
      ALLOCATE(QWATPA(LCM))  
      ALLOCATE(QWBDTOP(LCM))  
      ALLOCATE(QWR(NQWRM))  
      ALLOCATE(QWRCJP(NQJPM))  
      ALLOCATE(QWRSER(NDQWRSR,NQWRSRM))  
      ALLOCATE(QWRSERT(0:NQWRSRM))  
      ALLOCATE(QWRSERTLP(0:NQWRSRM))  
      ALLOCATE(QWTRBED(LCM,0:KBM))  
      ALLOCATE(QWTRBED1(LCM,0:KBM))  
      ALLOCATE(QWTRBEDA(LCM))  
      ALLOCATE(QWTRBEDA1(LCM))  
      !ALLOCATE(QXXSUM(LCM))     ! PMC - NOT USED
      !ALLOCATE(QYYSUM(LCM))     ! PMC - NOT USED
      !ALLOCATE(RA4(LCM))        ! PMC - NOT USED
      ALLOCATE(RAIN(NDASER,NASERM))  
      ALLOCATE(RAINLPF(LCM))  
      ALLOCATE(RAINT(LCM))  
      ALLOCATE(RBPSBL(LCM))  
      ALLOCATE(RCG(LCM))  
      ALLOCATE(RCOSMICX(LCM,KCM))  
      ALLOCATE(RCOSMICXN(LCM,KCM))  
      ALLOCATE(RCOSMICXP(LCM,KCM))  
      ALLOCATE(RCOSMICY(LCM,KCM))  
      ALLOCATE(RCOSMICYN(LCM,KCM))  
      ALLOCATE(RCOSMICYP(LCM,KCM))  
      ALLOCATE(RCOSMICZ(LCM,0:KCM))  
      ALLOCATE(RCOSMICZN(LCM,0:KCM))  
      ALLOCATE(RCOSMICZP(LCM,0:KCM))  
      ALLOCATE(RCX(LCM))  
      ALLOCATE(RCY(LCM))  
      ALLOCATE(RDLPSQ(0:NVEGTPM))  
      ALLOCATE(REAC(NWQZM))  
      ALLOCATE(RESPSUM(LCMWQ,KCM,4))  
      ALLOCATE(RHA(LCM))  
      ALLOCATE(RHS(MGM))  
      ALLOCATE(RI(NPDM))  
      ALLOCATE(RIFTR(LCM))  
      ALLOCATE(RINFLPF(LCM))  
      ALLOCATE(RJ(NPDM))  
      ALLOCATE(RK(NPDM))  
      ALLOCATE(RKASUM(LCMWQ,KCM))  
      ALLOCATE(RKTOXB(NTXM))  
      ALLOCATE(RKTOXP(NTXM))  
      ALLOCATE(RKTOXW(NTXM))  
      ALLOCATE(RLIGHTC(LCMWQ,KCM))  
      ALLOCATE(RLIGHTT(LCMWQ,KCM))  
      ALLOCATE(RMAJ(MTM))  
      ALLOCATE(RMIN(MTM))  
      ALLOCATE(RMOLTX(NTXM))  
      ALLOCATE(RNH4NO3(LCM))  
      ALLOCATE(RNH4WQ(LCM))  
      ALLOCATE(RNO3WQ(LCM))  
      !ALLOCATE(RNULL(LCM))       ! PMC - NOT USED 
      ALLOCATE(ROUSE(LCM))  
      ALLOCATE(RQCMUL(NQCTLM))  
      ALLOCATE(RQSMUL(NQSIJM))  
      ALLOCATE(RRHS(LCM,KBM+1))  
      !ALLOCATE(RSDB(LCM))       ! PMC - NOT USED
      !ALLOCATE(RSDR(LCM))       ! PMC - NOT USED
      !ALLOCATE(RSDZ(LCM,KCM))   ! PMC - NOT USED 
      ALLOCATE(RSEDERE2T(NSCM))  
      ALLOCATE(RSEDERE2TB(NSCM))  
      ALLOCATE(RSEDERE2TW(NSCM))  
      ALLOCATE(RSEDERO2T(NSCM))  
      ALLOCATE(RSEDERO2TB(NSCM))  
      ALLOCATE(RSEDERO2TW(NSCM))  
      ALLOCATE(RSNDERE2T(NSNM))  
      ALLOCATE(RSNDERE2TB(NSNM))  
      ALLOCATE(RSNDERE2TW(NSNM))  
      ALLOCATE(RSNDERO2T(NSNM))  
      ALLOCATE(RSNDERO2TB(NSNM))  
      ALLOCATE(RSNDERO2TW(NSNM))  
      ALLOCATE(RSNDM(NSTM))
      ALLOCATE(RSOL(MGM))  
      ALLOCATE(RSSBCE(LCM))  
      ALLOCATE(RSSBCN(LCM))  
      ALLOCATE(RSSBCS(LCM))  
      ALLOCATE(RSSBCW(LCM))  
      !ALLOCATE(RTMP(LCM))      ! PMC - NOT USED
      !ALLOCATE(RTMP1(LCM))     ! PMC - NOT USED
      ALLOCATE(RTOXERE2T(NTXM))  
      ALLOCATE(RTOXERE2TB(NTXM))  
      ALLOCATE(RTOXERE2TW(NTXM))  
      ALLOCATE(RTOXERO2T(NTXM))  
      ALLOCATE(RTOXERO2TB(NTXM))  
      ALLOCATE(RTOXERO2TW(NTXM))  
      ALLOCATE(RTXBSDB(LCM,KBM,NSTM+2,NTXM))  
      ALLOCATE(SAAX(0:LCM))  
      ALLOCATE(SAAY(0:LCM))  
      ALLOCATE(SADWQMAX(LCMWQ,KCM))  
      ALLOCATE(SADWQMIN(LCMWQ,KCM))  
      ALLOCATE(SADWQSUM(LCMWQ,KCM))  
      ALLOCATE(SAL(LCM,KCM))  
      ALLOCATE(SAL1(LCM,KCM))  
      ALLOCATE(SALAD(KCM,1))  
      ALLOCATE(SALINIT(LCM,KCM))  
      ALLOCATE(SALLPF(LCM,KCM))  
      ALLOCATE(SALMN(LCMWQ,KCM))  
      ALLOCATE(SALMX(LCMWQ,KCM))  
      ALLOCATE(SALSUM(LCMWQ,KCM))  
      ALLOCATE(SBLOUT2T(NSNM))  
      ALLOCATE(SBLOUT2TB(NSNM))  
      ALLOCATE(SBLOUT2TW(NSNM))  
      ALLOCATE(SBX(0:LCM))  
      ALLOCATE(SBXO(0:LCM))  
      ALLOCATE(SBY(0:LCM))  
      ALLOCATE(SBYO(0:LCM))  
      ALLOCATE(SCAX(0:LCM))  
      ALLOCATE(SCAY(0:LCM))  
      ALLOCATE(SCB(0:LCM))  
      ALLOCATE(SCLSHA(MTM,MTM))  
      ALLOCATE(SCVEG(0:NVEGTPM))  
      ALLOCATE(SDBLV(NSTM))  
      ALLOCATE(SDEN(NSTM))  
      ALLOCATE(SDX(0:LCM))  
      ALLOCATE(SDY(0:LCM))  
      ALLOCATE(SED(LCM,KCM,NSCM))  
      ALLOCATE(SED1(LCM,KCM,NSCM))  
      ALLOCATE(SED3DMAX(NSCM))  
      ALLOCATE(SED3DMIN(NSCM))  
      ALLOCATE(SEDA(NSCM))  
      ALLOCATE(SEDAD(KCM,NSCM,1))  
      ALLOCATE(SEDB(LCM,KBM,NSCM))  
      ALLOCATE(SEDB1(LCM,KBM,NSCM))  
      ALLOCATE(SEDBA(LCM,NSCM))  
      ALLOCATE(SEDBA1(LCM,NSCM))  
      ALLOCATE(SEDBALL(LCM,KBM))  
      ALLOCATE(SEDBAT(LCM))  
      ALLOCATE(SEDBEG2T(NSCM))  
      ALLOCATE(SEDBEG2TB(NSCM))  
      ALLOCATE(SEDBEG2TW(NSCM))  
      ALLOCATE(SEDBINIT(LCM,KBM,NSCM))   ! PMC - WASTE OF MEMORY 
      ALLOCATE(SEDBLPF(LCM,KBM,NSCM))    ! PMC - MOVE TO CALMMT
      ALLOCATE(SEDBMO2T(NSCM))  
      ALLOCATE(SEDBMO2TB(NSCM))  
      ALLOCATE(SEDBMO2TW(NSCM))  
      ALLOCATE(SEDBO(NSTM))  
      ALLOCATE(SEDBS(LCM,KBM,NSCM))  
      ALLOCATE(SEDBT(LCM,KBM))  
      ALLOCATE(SEDBTLPF(LCM,KBM))  
      ALLOCATE(SEDDIA(NSTM))  
      ALLOCATE(SEDDIA50(LCM,KBM))  
      ALLOCATE(SEDEND2T(NSCM))  
      ALLOCATE(SEDEND2TB(NSCM))  
      ALLOCATE(SEDEND2TW(NSCM))  
      ALLOCATE(SEDERE2T(NSCM))  
      ALLOCATE(SEDERE2TB(NSCM))  
      ALLOCATE(SEDERE2TW(NSCM))  
      ALLOCATE(SEDERO2T(NSCM))  
      ALLOCATE(SEDERO2TB(NSCM))  
      ALLOCATE(SEDERO2TW(NSCM))  
      ALLOCATE(SEDERR2T(NSCM))  
      ALLOCATE(SEDERR2TB(NSCM))  
      ALLOCATE(SEDERR2TW(NSCM))  
      ALLOCATE(SEDF(LCM,0:KCM,NSCM))  
      ALLOCATE(SEDFDTAN(LCM,NSCM))  
      ALLOCATE(SEDFDTAP(LCM,NSCM))  
      ALLOCATE(SEDFLUX2T(NSCM))  
      ALLOCATE(SEDFPA(LCM,NSCM))  
      ALLOCATE(SEDINIT(LCM,KCM,NSCM))     ! PMC - WASTE OF MEMORY
      ALLOCATE(SEDLPF(LCM,KCM,NSCM))    
      ALLOCATE(SEDN(NSTM))  
      ALLOCATE(SEDO(NSTM))  
      ALLOCATE(SEDOUT2T(NSCM))  
      ALLOCATE(SEDOUT2TB(NSCM))  
      ALLOCATE(SEDOUT2TW(NSCM))  
      ALLOCATE(SEDPHI(NSTM))  
      ALLOCATE(SEDS(LCM,KCM,NSCM))  
      ALLOCATE(SEDT(LCM,KCM))  
      ALLOCATE(SEDTLPF(LCM,KCM))  
      ALLOCATE(SELSUM(LCM))  
      ALLOCATE(SEXP(NSTM))  
      ALLOCATE(SFL(LCM,KCM))  
      ALLOCATE(SFL2(LCM,KCM))  
      ALLOCATE(SFLAD(KCM,1))  
      ALLOCATE(SFLINIT(LCM,KCM))  
      ALLOCATE(SFLLPF(LCM,KCM))  
      ALLOCATE(SFLSBOT(LCM))  
      ALLOCATE(SGSM1(LCM,KBM))  
      ALLOCATE(SIGPHI(LCM,KBM))  
      ALLOCATE(SIGPHIA(LCM))  
      ALLOCATE(SKTOXP(NTXM))  
      ALLOCATE(SLSHA(MTM))  
      ALLOCATE(SM1DIFT(NSMZM))  
      ALLOCATE(SM1H2S(LCMWQ))  
      ALLOCATE(SM1NH4(LCMWQ))  
      ALLOCATE(SM1NO3(LCMWQ))  
      ALLOCATE(SM1PO4(LCMWQ))  
      ALLOCATE(SM1SI(LCMWQ))  
      ALLOCATE(SM2DIFT(NSMZM))  
      ALLOCATE(SM2H2S(LCMWQ))  
      ALLOCATE(SM2NH4(LCMWQ))  
      ALLOCATE(SM2NO3(LCMWQ))  
      ALLOCATE(SM2PO4(LCMWQ))  
      ALLOCATE(SM2SI(LCMWQ))  
      ALLOCATE(SMAC(LCM))  
      ALLOCATE(SMBST(LCMWQ))  
      ALLOCATE(SMCSOD(LCMWQ))  
      ALLOCATE(SMD1PO4(LCMWQ))  
      ALLOCATE(SMD1SI(LCMWQ))  
      ALLOCATE(SMDD(NSMZM))  
      ALLOCATE(SMDFC(LCMWQ,NSMGM))  
      ALLOCATE(SMDFN(LCMWQ,NSMGM))  
      ALLOCATE(SMDFP(LCMWQ,NSMGM))  
      ALLOCATE(SMDFSI(LCMWQ))  
      ALLOCATE(SMDGFC(LCMWQ))  
      ALLOCATE(SMDGFN(LCMWQ))  
      ALLOCATE(SMDGFP(LCMWQ))  
      ALLOCATE(SMDP(NSMZM))  
      ALLOCATE(SMDP1PO4(NSMZM))  
      ALLOCATE(SMDPMIN(NSMZM))  
      ALLOCATE(SMDTOH(NSMZM))  
      ALLOCATE(SMFCBC(NSMGM))  
      ALLOCATE(SMFCBD(NSMGM))  
      ALLOCATE(SMFCBG(NSMGM))  
      ALLOCATE(SMFCR(NSMZM,NSMGM))  
      ALLOCATE(SMFNBC(NSMGM))  
      ALLOCATE(SMFNBD(NSMGM))  
      ALLOCATE(SMFNBG(NSMGM))  
      ALLOCATE(SMFNR(NSMZM,NSMGM))  
      ALLOCATE(SMFPBC(NSMGM))  
      ALLOCATE(SMFPBD(NSMGM))  
      ALLOCATE(SMFPBG(NSMGM))  
      ALLOCATE(SMFPR(NSMZM,NSMGM))  
      ALLOCATE(SMHODT(NSMZM))  
      ALLOCATE(SMHSED(NSMZM))  
      ALLOCATE(SMHYST(LCMWQ))  
      ALLOCATE(SMJAQH2S(LCMWQ))  
      ALLOCATE(SMJDEN(LCMWQ))  
      ALLOCATE(SMJGCH4(LCMWQ))  
      ALLOCATE(SMJNIT(LCMWQ))  
      ALLOCATE(SMK1H2S(NWQTDM))  
      ALLOCATE(SMK1NO3(NSMZM))  
      ALLOCATE(SMK2NO3(NSMZM))  
      ALLOCATE(SMKL12(LCM))  
      ALLOCATE(SMKNH4(NSMZM))  
      ALLOCATE(SMNSOD(LCMWQ))  
      ALLOCATE(SMPOC(LCMWQ,NSMGM))  
      ALLOCATE(SMPON(LCMWQ,NSMGM))  
      ALLOCATE(SMPOP(LCMWQ,NSMGM))  
      ALLOCATE(SMPSI(LCMWQ))  
      ALLOCATE(SMSS(LCMWQ))  
      ALLOCATE(SMT(LCMWQ))  
      ALLOCATE(SMTD1CH4(NWQTDM))  
      ALLOCATE(SMTD2CH4(NWQTDM))  
      ALLOCATE(SMTDCD(NWQTDM,NSMGM))  
      ALLOCATE(SMTDDD(NWQTDM))  
      ALLOCATE(SMTDDP(NWQTDM))  
      ALLOCATE(SMTDND(NWQTDM,NSMGM))  
      ALLOCATE(SMTDNH4(NWQTDM))  
      ALLOCATE(SMTDNO3(NWQTDM))  
      ALLOCATE(SMTDPD(NWQTDM,NSMGM))  
      ALLOCATE(SMTDSI(NWQTDM))  
      ALLOCATE(SMTMP(LCM))  
      ALLOCATE(SMTSNAME(NSMTSM))  
      ALLOCATE(SMW12(LCM))  
      ALLOCATE(SMW2(NSMZM))  
      ALLOCATE(SMW2DTOH(NSMZM))  
      ALLOCATE(SMW2PHODT(NSMZM))  
      ALLOCATE(SNAPSHOTS(9999))  ! *** PMC - Hardwired for now
      ALLOCATE(SND(LCM,KCM,NSNM))  
      ALLOCATE(SND1(LCM,KCM,NSNM))  
      ALLOCATE(SND3DMAX(NSNM))  
      ALLOCATE(SND3DMIN(NSNM))  
      ALLOCATE(SNDA(NSNM))  
      ALLOCATE(SNDAD(KCM,NSNM,1))  
      ALLOCATE(SNDB(LCM,KBM,NSNM))  
      ALLOCATE(SNDB1(LCM,KBM,NSNM))  
      ALLOCATE(SNDBA(LCM,NSNM))  
      ALLOCATE(SNDBA1(LCM,NSNM))  
      ALLOCATE(SNDBAT(LCM))  
      ALLOCATE(SNDBEG2T(NSNM))  
      ALLOCATE(SNDBEG2TB(NSNM))  
      ALLOCATE(SNDBEG2TW(NSNM))  
      ALLOCATE(SNDBINIT(LCM,KBM,NSNM))  
      ALLOCATE(SNDBLPF(LCM,KBM,NSNM))  
      ALLOCATE(SNDBMO2T(NSNM))  
      ALLOCATE(SNDBMO2TB(NSNM))  
      ALLOCATE(SNDBMO2TW(NSNM))  
      ALLOCATE(SNDBS(LCM,KBM,NSNM))  
      ALLOCATE(SNDBT(LCM,KBM))  
      ALLOCATE(SNDBTLPF(LCM,KBM))  
      ALLOCATE(SNDEND2T(NSNM))  
      ALLOCATE(SNDEND2TB(NSNM))  
      ALLOCATE(SNDEND2TW(NSNM))  
      ALLOCATE(SNDEQ(LCM))  
      ALLOCATE(SNDEQSAV(LCM,NSNM))
      ALLOCATE(SNDEQB(LCM))  
      ALLOCATE(SNDERE2T(NSNM))  
      ALLOCATE(SNDERE2TB(NSNM))  
      ALLOCATE(SNDERE2TW(NSNM))  
      ALLOCATE(SNDERO2T(NSNM))  
      ALLOCATE(SNDERO2TB(NSNM))  
      ALLOCATE(SNDERO2TW(NSNM))  
      ALLOCATE(SNDERR2T(NSNM))  
      ALLOCATE(SNDERR2TB(NSNM))  
      ALLOCATE(SNDERR2TW(NSNM))  
      ALLOCATE(SNDF(LCM,0:KCM,NSNM))  
      ALLOCATE(SNDFBL(LCM,NSNM))  
      ALLOCATE(SNDFBL2T(NSNM))  
      ALLOCATE(SNDFDTAN(LCM,NSNM))  
      ALLOCATE(SNDFDTAP(LCM,NSNM))  
      ALLOCATE(SNDFLUX2T(NSNM))  
      ALLOCATE(SNDFPA(LCM,NSNM))  
      ALLOCATE(SNDINIT(LCM,KCM,NSNM))  
      ALLOCATE(SNDLPF(LCM,KCM,NSNM))  
      ALLOCATE(SNDOUT2T(NSNM))  
      ALLOCATE(SNDOUT2TB(NSNM))  
      ALLOCATE(SNDOUT2TW(NSNM))  
      ALLOCATE(SNDS(LCM,KCM,NSNM))  
      ALLOCATE(SNDT(LCM,KCM))  
      ALLOCATE(SNDTLPF(LCM,KCM))  
      ALLOCATE(SNLPX(LCM))  
      ALLOCATE(SNLPY(LCM))  
      ALLOCATE(SODMULT(NSMZM))  
      ALLOCATE(SODSUM(LCMWQ,KCM))  
      ALLOCATE(SOLFRD(NDASER))  
      ALLOCATE(SOLSRD(NDASER))  
      ALLOCATE(SOLSWR(NDASER,NASERM))  
      ALLOCATE(SOLSWRT(LCM))  
      ALLOCATE(SPB(0:LCM))  
      ALLOCATE(SPBE1(NPBEM))  
      ALLOCATE(SPBE2(NPBEM))  
      ALLOCATE(SPBN1(NPBNM))  
      ALLOCATE(SPBN2(NPBNM))  
      ALLOCATE(SPBS1(NPBSM))  
      ALLOCATE(SPBS2(NPBSM))  
      ALLOCATE(SPBW1(NPBWM))  
      ALLOCATE(SPBW2(NPBWM))  
      ALLOCATE(SPFAM0(NPFORM,MTM))  
      ALLOCATE(SPFAM1(NPFORM,MTM))  
      ALLOCATE(SPFAM2(NPFORM,MTM))  
      ALLOCATE(SSG(NSTM))  
      ALLOCATE(SSLSHA(MTM,MTM))  
      ALLOCATE(SSSIN(MTM))  
      ALLOCATE(SSSIN1(MTM))  
      ALLOCATE(SSSS(MTM))  
      ALLOCATE(STBX(LCM))  
      ALLOCATE(STBXO(LCM))  
      ALLOCATE(STBY(LCM))  
      ALLOCATE(STBYO(LCM))  
      ALLOCATE(STCAP(LCM))  
      ALLOCATE(STCUV(LCM))  
      ALLOCATE(STDOCB(LCM,KBM))  
      ALLOCATE(STDOCW(LCM,KCM))  
      ALLOCATE(STFPOCB(LCM,KBM,NSTM))  
      ALLOCATE(STFPOCW(LCM,KCM,NSTM))  
      ALLOCATE(STLSHA(MTM))  
      ALLOCATE(STPOCB(LCM,KBM))  
      ALLOCATE(STPOCW(LCM,KCM))  
      ALLOCATE(STRESSS(0:KSM))  
      ALLOCATE(STRSE(LCM,KBM))  
      ALLOCATE(STRSEM(LCM,KBM))  
      ALLOCATE(STRST(LCM,KBM))  
      ALLOCATE(SUB(0:LCM))  
      ALLOCATE(SUBO(0:LCM))  
      ALLOCATE(SURFDX(NXYSDATM,LCM))  
      ALLOCATE(SURFDY(NXYSDATM,LCM))  
      ALLOCATE(SVB(0:LCM))  
      ALLOCATE(SVBO(0:LCM))  
      ALLOCATE(SVPA(0:LCM))  
      ALLOCATE(SWB(0:LCM))  
      ALLOCATE(SWQ(LCMWQ))  
      ALLOCATE(SWQSUM(LCMWQ,KCM))  
      ALLOCATE(SYMBOL(MTM))  
      ALLOCATE(TAASER(NASERM))  
      ALLOCATE(TACSER(NCSERM,NSTVM))  
      ALLOCATE(TAD(KCM,1))  
      ALLOCATE(TADFLUX(LCM,NTXM))  
      ALLOCATE(TADFLUX2T(NTXM))  
      ALLOCATE(TAGWSER(NQSERM))  
      ALLOCATE(TAPSER(NPSERM))  
      ALLOCATE(TAQSER(NQSERM))  
      ALLOCATE(TAQWRSR(NQWRSRM))  
      ALLOCATE(TASER(NDASER,NASERM))  
      ALLOCATE(TATMT(LCM))  
      ALLOCATE(TAUB(LCM))  
      ALLOCATE(TAUBSED(LCM))  
      ALLOCATE(TAUBSND(LCM))  
      ALLOCATE(TAUCRCOH(LCM,KBM))  
      ALLOCATE(TAUD(NSTM))  
      ALLOCATE(TAUN(NSTM))  
      ALLOCATE(TAUR(NSTM))  
      ALLOCATE(TAURB(LCM,KBM))  
      ALLOCATE(TAURBA(LCM))  
      ALLOCATE(TAURS(LCM,KBM))  
      ALLOCATE(TAURSA(LCM))  
      ALLOCATE(TAVEGSER(NVEGSERM))  
      !ALLOCATE(TAWQCSR(NWQCSRM,NWQVM))  
C     ALLOCATE(TAWQPSR(NWQPSRM))  
      ALLOCATE(TAWSER(NWSERM))  
      ALLOCATE(TBX(LCM))  
      ALLOCATE(TBX1(LCM))  
      ALLOCATE(TBY(LCM))  
      ALLOCATE(TBY1(LCM))  
      ALLOCATE(TCASER(NASERM))  
      ALLOCATE(TCCSER(NCSERM,NSTVM))  
      ALLOCATE(TCGWSER(NQSERM))  
      ALLOCATE(TCNBED(LCM,KBM))  
      ALLOCATE(TCNBEDA(LCM))  
      ALLOCATE(TCP(MTM))  
      ALLOCATE(TCPSER(NPSERM))  
      ALLOCATE(TCQSER(NQSERM))  
      ALLOCATE(TCQWRSR(NQWRSRM))  
      ALLOCATE(TCSER(MAX(NDCSER,NDWQCSR),NCSERM,NSTVM))
      ALLOCATE(TCSHIELDS(NSTM))  
      ALLOCATE(TCVEGSER(NVEGSERM))  
      !ALLOCATE(TCWQCSR(NWQCSRM,NWQVM))  
      ALLOCATE(TCWQPSR(NWQPSRM))
      ALLOCATE(TCWSER(NWSERM))  
      ALLOCATE(TDRY(NDASER,NASERM))  
      ALLOCATE(TEM(LCM,KCM))  
      ALLOCATE(TEM1(LCM,KCM))  
      ALLOCATE(TEMAD(KCM,1))  
      ALLOCATE(TEMB(LCM))  
      ALLOCATE(TEMB1(LCM))  
      ALLOCATE(TEMINIT(LCM,KCM))  
      ALLOCATE(TEMLPF(LCM,KCM))  
      ALLOCATE(TEMSUM(LCMWQ,KCM))  
      ALLOCATE(TEXP(NSTM))  
      ALLOCATE(TGWSER(NDGWSER,NGWSERM))  
      ALLOCATE(THJET(NQJPM)) 
      ALLOCATE(TIMVSFP(MTVSM))  
      ALLOCATE(TKTOXW(NTXM))  
      ALLOCATE(TMP3D(KCM))  
      ALLOCATE(TOX(LCM,KCM,NTXM))  
      ALLOCATE(TOX1(LCM,KCM,NTXM))  
      ALLOCATE(TOX3DMAX(NTXM))  
      ALLOCATE(TOX3DMIN(NTXM))  
      ALLOCATE(TOXA(NTXM))  
      ALLOCATE(TOXAD(KCM,NTXM,1))  
      ALLOCATE(TOXB(LCM,KBM,NTXM))  
      ALLOCATE(TOXB1(LCM,KBM,NTXM))  
      ALLOCATE(TOXBA(LCM,NTXM))  
      ALLOCATE(TOXBA1(LCM,NTXM))  
      ALLOCATE(TOXBBALN(LCM))  
      ALLOCATE(TOXBBALO(LCM))  
      ALLOCATE(TOXBEG2T(NTXM))  
      ALLOCATE(TOXBEG2TB(NTXM))  
      ALLOCATE(TOXBEG2TW(NTXM))  
      ALLOCATE(TOXBINIT(LCM,KBM,NTXM))  
      ALLOCATE(TOXBLB(NTXM))  
      ALLOCATE(TOXBLB2T(NTXM))  
      ALLOCATE(TOXBLPF(LCM,KBM,NTXM))  
      ALLOCATE(TOXBMO2T(NTXM))  
      ALLOCATE(TOXBMO2TB(NTXM))  
      ALLOCATE(TOXBMO2TW(NTXM))  
      ALLOCATE(TOXBS(LCM,KBM,NTXM))  
      ALLOCATE(TOXCDFB(LCM,KBM,NTXM))  
      ALLOCATE(TOXCDFW(LCM,KCM,NTXM))  
      ALLOCATE(TOXEND2T(NTXM))  
      ALLOCATE(TOXEND2TB(NTXM))  
      ALLOCATE(TOXEND2TW(NTXM))  
      ALLOCATE(TOXERE2T(NTXM))  
      ALLOCATE(TOXERE2TB(NTXM))  
      ALLOCATE(TOXERE2TW(NTXM))  
      ALLOCATE(TOXERO2T(NTXM))  
      ALLOCATE(TOXERO2TB(NTXM))  
      ALLOCATE(TOXERO2TW(NTXM))  
      ALLOCATE(TOXERR2T(NTXM))  
      ALLOCATE(TOXERR2TB(NTXM))  
      ALLOCATE(TOXERR2TW(NTXM))  
      ALLOCATE(TOXF(LCM,0:KCM,NTXM))  
      ALLOCATE(TOXFB(LCM,KBM,NTXM))  
      ALLOCATE(TOXFBA(LCM,NTXM))  
      ALLOCATE(TOXFBL(LCM,NTXM))  
      ALLOCATE(TOXFBL2T(NTXM))  
      ALLOCATE(TOXFBLT(NTXM))  
      ALLOCATE(TOXFDFB(LCM,KBM,NTXM))  
      ALLOCATE(TOXFDFW(LCM,KCM,NTXM))  
      ALLOCATE(TOXFLUXB2T(NTXM))  
      ALLOCATE(TOXFLUXW2T(NTXM))  
      ALLOCATE(TOXINIT(LCM,KCM,NTXM))  
      ALLOCATE(TOXINTB(NTXM))  
      ALLOCATE(TOXINTW(NTXM))  
      ALLOCATE(TOXLPF(LCM,KCM,NTXM))  
      ALLOCATE(TOXOUT2T(NTXM))  
      ALLOCATE(TOXOUT2TB(NTXM))  
      ALLOCATE(TOXOUT2TW(NTXM))  
      ALLOCATE(TOXPARB(NSTM,NTXM))  
      ALLOCATE(TOXPARBC(2,NTXM))  
      ALLOCATE(TOXPARW(NSTM,NTXM))  
      ALLOCATE(TOXPARWC(2,NTXM))  
      ALLOCATE(TOXPFB(LCM,KBM,NSTM+2,NTXM))  
      ALLOCATE(TOXPFTB(LCM,KBM,NTXM))  
      ALLOCATE(TOXPFTW(LCM,KCM,NTXM))  
      ALLOCATE(TOXPFW(LCM,KCM,NSTM+2,NTXM))  
      ALLOCATE(TOXS(LCM,KCM,NTXM))  
      ALLOCATE(TOXTMP(LCM,KBM+1))  
      ALLOCATE(TOXWBALN(LCM))  
      ALLOCATE(TOXWBALO(LCM))  
      ALLOCATE(TPSER(NDPSER,NPSERM))  
      ALLOCATE(TPWQMAX(LCMWQ,KCM))  
      ALLOCATE(TPWQMIN(LCMWQ,KCM))  
      ALLOCATE(TPWQSUM(LCMWQ,KCM))  
      ALLOCATE(TQSER(NDQSER,NQSERM))  
      ALLOCATE(TQWRSER(NDQWRSR,NQWRSRM))  
      ALLOCATE(TRTOXB(NTXM))  
      ALLOCATE(TSIWQSUM(LCMWQ,KCM))  
      ALLOCATE(TSSMN(LCMWQ,KCM))  
      ALLOCATE(TSSMX(LCMWQ,KCM))  
      ALLOCATE(TSSRD(NDASER))  
      ALLOCATE(TSSSUM(LCMWQ,KCM))  
      ALLOCATE(TSSTOP(MTSSTSPM,NTSSTSPM))  
      ALLOCATE(TSSTRT(MTSSTSPM,NTSSTSPM))  
      ALLOCATE(TSX(LCM))  
      ALLOCATE(TSX1(LCM))  
      ALLOCATE(TSY(LCM))  
      ALLOCATE(TSY1(LCM))  
      ALLOCATE(TVAR1E(LCM,KCM))  
      ALLOCATE(TVAR1N(LCM,KCM))  
      ALLOCATE(TVAR1S(LCM,KCM))  
      ALLOCATE(TVAR1W(LCM,KCM))  
      ALLOCATE(TVAR2C(LCM,0:KCM))  
      ALLOCATE(TVAR2E(LCM,KCM))  
      ALLOCATE(TVAR2N(LCM,KCM))  
      ALLOCATE(TVAR2S(LCM,KCM))  
      ALLOCATE(TVAR2W(LCM,KCM))  
      ALLOCATE(TVAR3C(LCM))  
      ALLOCATE(TVAR3E(LCM))  
      ALLOCATE(TVAR3N(LCM))  
      ALLOCATE(TVAR3S(LCM))  
      ALLOCATE(TVAR3W(LCM))  
      ALLOCATE(TVEGSER(NDVEGSER,NVEGSERM))  
      ALLOCATE(TWET(NDASER,NASERM))  
      ALLOCATE(TWQ(LCMWQ))  
      !ALLOCATE(TWQCSER(NDWQCSR,NWQCSRM,NWQVM))  
      ALLOCATE(TWQPSER(NDWQPSR,NWQPSRM))
      ALLOCATE(TWATER(LCM))	!BRW for outputing water temperature to tecplot
      ALLOCATE(TWSER(NDWSER,NWSERM))  
      ALLOCATE(TXPFLPF(LCM,KCM,NSTM+2,NTXM))  
      ALLOCATE(U(LCM,KCM))  
      ALLOCATE(U0(KCM,MLM))  
      ALLOCATE(U1(LCM,KCM))  
      !ALLOCATE(U1ATV(LCM,KCM))    ! PMC - NOT USED
      ALLOCATE(U1DT1(KCM,MLM))  
      ALLOCATE(U1V(LCM))  
      ALLOCATE(U2(LCM,KCM))  
      ALLOCATE(UAGD(KCM,1))  
      !ALLOCATE(UATV(LCM,KCM))     ! PMC - NOT USED
      ALLOCATE(UCELLCTR(LCM))  
      ALLOCATE(UCLSHA(KCM,MLM,MTM))  
      ALLOCATE(UCOS(MTM))  
      ALLOCATE(UE0(MLM))  
      ALLOCATE(UE1DT1(MLM))  
      ALLOCATE(UECLSHA(MLM,MTM))  
      ALLOCATE(UELPF(LCM))  
      ALLOCATE(UELSHA(MLM))  
      ALLOCATE(UESLSHA(MLM,MTM))  
      ALLOCATE(UETLSHA(MLM))  
      ALLOCATE(UHDY(LCM,KCM))  
      ALLOCATE(UHDY1(LCM,KCM))  
      ALLOCATE(UHDY1ATV(LCM,KCM))  
      ALLOCATE(UHDY1E(LCM))  
      ALLOCATE(UHDY2(LCM,KCM))  
      ALLOCATE(UHDY2E(LCM))  
      !ALLOCATE(UHDYATV(LCM,KCM))    ! PMC - NOT USED
      ALLOCATE(UHDYE(LCM))  
      ALLOCATE(UHDYED(LCM))  
      ALLOCATE(UHDYWQ(LCM,KCM))  
      ALLOCATE(UHE(LCM))  
      ALLOCATE(UHEQ(LCMWQ))  
      ALLOCATE(UHLPF(LCM,KCM))  
      ALLOCATE(UIRT(LCM,KCM))  
      ALLOCATE(ULPF(LCM,KCM))  
      ALLOCATE(ULSHA(KCM,MLM))  
      ALLOCATE(UMPLRPD(LCGLM,KCM))  
      ALLOCATE(UPLRPD(LCGLM,KCM))  
      ALLOCATE(USIN(MTM))  
      ALLOCATE(USLSHA(KCM,MLM,MTM))  
      ALLOCATE(USTAR(LCM))  
      ALLOCATE(USTARSED(LCM))  
      ALLOCATE(USTARSND(LCM))  
      ALLOCATE(UTLPF(LCM,KCM))  
      ALLOCATE(UTLSHA(KCM,MLM))  
      ALLOCATE(UUU(LCM,KCM))  
      ALLOCATE(UV(LCM))  
      ALLOCATE(UVPT(LCM,KCM))  
      ALLOCATE(UWQ(LCM,KCM))  
      ALLOCATE(UWVMAG(LCM))  
      ALLOCATE(UWVSQ(LCM))  
      ALLOCATE(V(LCM,KCM))  
      ALLOCATE(V0(KCM,MLM))  
      ALLOCATE(V1(LCM,KCM))  
      ALLOCATE(V1DT1(KCM,MLM))  
      ALLOCATE(V1U(LCM))  
      ALLOCATE(V2(LCM,KCM))  
      ALLOCATE(VAGD(KCM,1))  
      ALLOCATE(VATU(LCM,KCM))  
      ALLOCATE(VCELLCTR(LCM))  
      ALLOCATE(VCLSHA(KCM,MLM,MTM))  
      ALLOCATE(VCOS(MTM))  
      ALLOCATE(VDRBED(LCM,KBM))  
      ALLOCATE(VDRBED1(LCM,KBM))  
      ALLOCATE(VDRBED2(LCM,KBM))  
      ALLOCATE(VDRBEDA(LCM))  
      ALLOCATE(VDRBEDSED(LCM,KBM))  
      ALLOCATE(VDRBEDSND(LCM,KBM))  
      ALLOCATE(VDRDEPO(NSTM))  
      ALLOCATE(VDRHBEDA1(LCM))  
      ALLOCATE(VDRRSPO(NSTM))  
      ALLOCATE(VDWASTE(LCM))  
      ALLOCATE(VE0(MLM))  
      ALLOCATE(VE1DT1(MLM))  
      ALLOCATE(VECLSHA(MLM,MTM))  
      ALLOCATE(VEGSERB(NDVEGSER,NVEGSERM))  
      ALLOCATE(VEGSERBT(NVEGSERM))  
      ALLOCATE(VEGSERH(NDVEGSER,NVEGSERM))  
      ALLOCATE(VEGSERHT(NVEGSERM))  
      ALLOCATE(VEGSERR(NDVEGSER,NVEGSERM))  
      ALLOCATE(VEGSERRT(NVEGSERM))  
      ALLOCATE(VELPF(LCM))  
      ALLOCATE(VELSHA(MLM))  
      ALLOCATE(VESLSHA(MLM,MTM))  
      ALLOCATE(VETLSHA(MLM))  
      ALLOCATE(VFRBED(LCM,KBM,NSTM))  
      ALLOCATE(VFRBED1(LCM,KBM,NSTM))  
      ALLOCATE(VHDX(LCM,KCM))  
      ALLOCATE(VHDX1(LCM,KCM))  
      ALLOCATE(VHDX1ATU(LCM,KCM))  
      ALLOCATE(VHDX1E(LCM))  
      ALLOCATE(VHDX2(LCM,KCM))  
      ALLOCATE(VHDX2E(LCM))  
      ALLOCATE(VHDXATU(LCM,KCM))  
      ALLOCATE(VHDXE(LCM))  
      ALLOCATE(VHDXED(LCM))  
      ALLOCATE(VHDXWQ(LCM,KCM))  
      ALLOCATE(VHE(LCM))  
      ALLOCATE(VHLPF(LCM,KCM))  
      ALLOCATE(VIRT(LCM,KCM))  
      ALLOCATE(VLPF(LCM,KCM))  
      ALLOCATE(VLSHA(KCM,MLM))  
      ALLOCATE(VMPLRPD(LCGLM,KCM))  
      ALLOCATE(VOLBW2(LCM,KBM))  
      ALLOCATE(VOLBW3(LCM,KBM))  
      ALLOCATE(VOLPERC(LCM))  
      ALLOCATE(VOLSEL(LCM))  
      ALLOCATE(VOLTOX(NTXM))  
      ALLOCATE(VOLWQ(LCMWQ))  
      ALLOCATE(VPA(LCM))  
      ALLOCATE(VPLRPD(LCGLM,KCM))  
      ALLOCATE(VPX(LCM,0:KCM))  
      ALLOCATE(VPY(LCM,0:KCM))  
      ALLOCATE(VPZ(LCM,KCM))  
      ALLOCATE(VSIN(MTM))  
      ALLOCATE(VSLSHA(KCM,MLM,MTM))  
      ALLOCATE(VTLPF(LCM,KCM))  
      ALLOCATE(VTLSHA(KCM,MLM))  
      ALLOCATE(VU(LCM))  
      ALLOCATE(VVLSHA(MGM,MGM))  
      ALLOCATE(VVPT(LCM,KCM))  
      ALLOCATE(VVV(LCM,KCM))  
      ALLOCATE(VWQ(LCM,KCM))  
      ALLOCATE(VWVMAG(LCM))  
      ALLOCATE(VXXSUM(LCM))  
      ALLOCATE(VYYSUM(LCM))  
      ALLOCATE(W(LCM,0:KCM))  
      ALLOCATE(W1(LCM,0:KCM))  
      ALLOCATE(W2(LCM,0:KCM))  
      ALLOCATE(WACCWE(LCM))  
      ALLOCATE(WAGD(KCM,1))  
      ALLOCATE(WC(NTSM))  
      ALLOCATE(WC2(NTSM))  
      ALLOCATE(WCOREST(LCM))
      ALLOCATE(WCORWST(LCM))
      ALLOCATE(WCORNTH(LCM))
      ALLOCATE(WCORSTH(LCM))
      ALLOCATE(WINDD(NDWSER,NWSERM))  
      ALLOCATE(WINDS(NDWSER,NWSERM))  
      ALLOCATE(WINDST(LCM))  
      ALLOCATE(WINDSTKA(LCM))  
      ALLOCATE(WINDSTKA_SAVE(LCM))  
      ALLOCATE(WIRT(LCM,KSM))  
      ALLOCATE(WKQ(KCM))  
      ALLOCATE(WLPF(LCM,0:KCM))  
      ALLOCATE(WLSHA(MGM))  
      ALLOCATE(WMPLRPD(LCGLM,KCM))  
      ALLOCATE(WNDVELE(LCM))  
      ALLOCATE(WNDVELN(LCM))  
      ALLOCATE(WNDWHT(LCM,NWSERM))  
      ALLOCATE(WPERDX(NXYSDATM,LCM))  
      ALLOCATE(WPERDY(NXYSDATM,LCM))  
      ALLOCATE(WPLRPD(LCGLM,KCM))  
      ALLOCATE(WQAPC(LCMWQ))  
      ALLOCATE(WQATML(LCMWQ,KCM,NWQVM))  
      ALLOCATE(WQBCSET(LCMWQ,2))  
      ALLOCATE(WQBDSET(LCMWQ,2))  
      ALLOCATE(WQBFCOD(LCMWQ))  
      ALLOCATE(WQBFNH4(LCMWQ))  
      ALLOCATE(WQBFNO3(LCMWQ))  
      ALLOCATE(WQBFO2(LCMWQ))  
      ALLOCATE(WQBFPO4D(LCMWQ))  
      ALLOCATE(WQBFSAD(LCMWQ))  
      ALLOCATE(WQBGSET(LCMWQ,2))  
      ALLOCATE(WQBMC(LCMWQ))  
      ALLOCATE(WQBMD(LCMWQ))  
      ALLOCATE(WQBMG(LCMWQ))  
      ALLOCATE(WQBMM(LCMWQ))  
      ALLOCATE(WQBMRC(NWQZM))  
      ALLOCATE(WQBMRD(NWQZM))  
      ALLOCATE(WQBMRG(NWQZM))  
      ALLOCATE(WQBMRM(NWQZM))  
      ALLOCATE(WQCHL(LCMWQ,KCM))  
      !ALLOCATE(WQCSER(NDWQCSR,KCM,NWQCSRM,NWQVM))  
      ALLOCATE(WQDENIT(LCMWQ))  
      ALLOCATE(WQDFBC(LCMWQ))  
      ALLOCATE(WQDFBD(LCMWQ))  
      ALLOCATE(WQDFBG(LCMWQ))  
      ALLOCATE(WQDFLC(LCMWQ))  
      ALLOCATE(WQDFLN(LCMWQ))  
      ALLOCATE(WQDFLP(LCMWQ))  
      ALLOCATE(WQDFRC(LCMWQ))  
      ALLOCATE(WQDFRN(LCMWQ))  
      ALLOCATE(WQDFRP(LCMWQ))  
      ALLOCATE(WQDFSI(LCMWQ))  
      ALLOCATE(WQDOPM(NWQZM))  
      ALLOCATE(WQDOS(LCM))  
C     ALLOCATE(WQDSQ(LCMWQ,KCM))  
      ALLOCATE(WQH10(LCMWQ))  
      ALLOCATE(WQHT(KCM))  
      ALLOCATE(WQI0BOT(LCM))  
      ALLOCATE(WQKBP(LCMWQ))  
      ALLOCATE(WQKCD(NWQZM))  
      ALLOCATE(WQKCOD(NWQTDM,NWQZM))  
      ALLOCATE(WQKDC(NWQZM))  
      ALLOCATE(WQKDCALM(NWQZM))  
      ALLOCATE(WQKDON(LCMWQ))  
      ALLOCATE(WQKDOP(LCMWQ))  
      ALLOCATE(WQKEB(NWQZM))  
      ALLOCATE(WQKETMN(LCMWQ,KCM))  
      ALLOCATE(WQKETMX(LCMWQ,KCM))  
      ALLOCATE(WQKETOT(LCM,KCM))  
      ALLOCATE(WQKETSUM(LCMWQ,KCM))  
      ALLOCATE(WQKHCOD(NWQZM))  
      ALLOCATE(WQKHR(LCMWQ))  
      ALLOCATE(WQKHRM(NWQZM))  
      ALLOCATE(WQKK(LCMWQ))  
      ALLOCATE(WQKLPC(LCMWQ))  
      ALLOCATE(WQKLPN(LCMWQ))  
      ALLOCATE(WQKLPP(LCMWQ))  
      ALLOCATE(WQKMV(LCMWQ))  
      ALLOCATE(WQKMVA(LCMWQ))  
      ALLOCATE(WQKMVB(LCMWQ))  
      ALLOCATE(WQKMVC(LCMWQ))  
      ALLOCATE(WQKMVD(LCMWQ))  
      ALLOCATE(WQKMVE(LCMWQ))  
      ALLOCATE(WQKMVMIN(LCMWQ))  
      ALLOCATE(WQKRDOS(LCMWQ))  
      ALLOCATE(WQKRO(NWQZM))  
      ALLOCATE(WQKRPC(LCMWQ))  
      ALLOCATE(WQKRPN(LCMWQ))  
      ALLOCATE(WQKRPP(LCMWQ))  
      ALLOCATE(WQKSUA(NWQTDM))  
      ALLOCATE(WQKTR(NWQZM))  
      ALLOCATE(WQLPSET(LCMWQ,2))  
      ALLOCATE(WQN17(LCMWQ))  
      ALLOCATE(WQNIT(LCMWQ))  
      ALLOCATE(WQO18(LCMWQ))  
      ALLOCATE(WQOBCE(NBBEM,2,NWQVM))  
      ALLOCATE(WQOBCN(NBBNM,2,NWQVM))  
      ALLOCATE(WQOBCS(NBBSM,2,NWQVM))  
      ALLOCATE(WQOBCW(NBBWM,2,NWQVM))  
      ALLOCATE(WQOBCE_GL(NBBEM,2,NWQVM))  
      ALLOCATE(WQOBCN_GL(NBBNM,2,NWQVM))  
      ALLOCATE(WQOBCS_GL(NBBSM,2,NWQVM))  
      ALLOCATE(WQOBCW_GL(NBBWM,2,NWQVM))
      ALLOCATE(WQOBTOT(LCM))
      ALLOCATE(WQO(LCM,NWQVM))  ! *** DSLLC
      ALLOCATE(WQP19(LCMWQ))  
      ALLOCATE(WQPC(LCMWQ))  
      ALLOCATE(WQPD(LCMWQ))  
      ALLOCATE(WQPG(LCMWQ))  
      ALLOCATE(WQPM(LCMWQ))  
      ALLOCATE(WQPMC(NWQZM))  
      ALLOCATE(WQPMD(NWQZM))  
      ALLOCATE(WQPMG(NWQZM))  
      ALLOCATE(WQPMM(NWQZM))  
      ALLOCATE(WQPNC(LCMWQ))  
      ALLOCATE(WQPND(LCMWQ))  
      ALLOCATE(WQPNG(LCMWQ))  
      ALLOCATE(WQPNM(LCMWQ))  
      ALLOCATE(WQPO4D(LCMWQ,KCM))  
      ALLOCATE(WQPRC(LCMWQ))  
      ALLOCATE(WQPRD(LCMWQ))  
      ALLOCATE(WQPRG(LCMWQ))  
      ALLOCATE(WQPRM(LCMWQ))  
      ALLOCATE(WQPRRC(NWQZM))  
      ALLOCATE(WQPRRD(NWQZM))  
      ALLOCATE(WQPRRG(NWQZM))  
      ALLOCATE(WQPRRM(NWQZM))  
      ALLOCATE(WQPSQ(0:NWQPSM))  
C     ALLOCATE(WQPSQC(0:NWQPSM))  
      ALLOCATE(WQPSSER(NDWQPSR,NWQVM,NWQPSRM))
      ALLOCATE(WQPSSRT(NWQVM,0:NWQPSRM))  
      ALLOCATE(WQR20(LCMWQ))  
      ALLOCATE(WQRPSET(LCMWQ,2))  
      ALLOCATE(WQRR(LCMWQ))  
      ALLOCATE(WQSAD(LCMWQ,KCM))  
      ALLOCATE(WQSDCOEF(NWQZM))  
      ALLOCATE(WQT10(LCMWQ))  
      ALLOCATE(WQT17(LCMWQ))  
      ALLOCATE(WQTAMP(LCMWQ,KCM))  
      ALLOCATE(WQTD1FCB(NWQTDM))  
      ALLOCATE(WQTD2FCB(NWQTDM))  
      ALLOCATE(WQTDGC(NWQTDM))  
      ALLOCATE(WQTDGD(NWQTDM))  
      ALLOCATE(WQTDGG(NWQTDM))  
      ALLOCATE(WQTDGM(NWQTDM))  
      ALLOCATE(WQTDGP(NWQTDM))  
      ALLOCATE(WQTDHDR(NWQTDM))  
      ALLOCATE(WQTDKR(NWQTDM,NWQZM))  
      ALLOCATE(WQTDMNL(NWQTDM))  
      ALLOCATE(WQTDNIT(NWQTDM))  
      ALLOCATE(WQTDRC(NWQTDM))  
      ALLOCATE(WQTDRD(NWQTDM))  
      ALLOCATE(WQTDRG(NWQTDM))  
      ALLOCATE(WQTDRM(NWQTDM))  
      ALLOCATE(WQTDTAM(NWQTDM))  
      ALLOCATE(WQTEMMAX(LCMWQ,KCM))  
      ALLOCATE(WQTEMMIN(LCMWQ,KCM))  
      ALLOCATE(WQTEMSUM(LCMWQ,KCM))  
      ALLOCATE(WQV(LCMWQ,KCM,0:NWQVM))  
      ALLOCATE(WQVMAX(LCMWQ,KCM,NWQVM))  
      ALLOCATE(WQVMIN(LCMWQ,KCM,NWQVM))  
      ALLOCATE(WQVO(LCMWQ,KCM,0:NWQVM))  
      ALLOCATE(WQVSUM(LCMWQ,KCM,NWQVM))  
      ALLOCATE(WQWDSL(LCMWQ,KCM,NWQVM))  
      ALLOCATE(WQWPSL(LCMWQ,KCM,NWQVM))  
      ALLOCATE(WQWPSLC(0:NWQPSM,NWQVM))  
      ALLOCATE(WQWSC(NWQZM))  
      ALLOCATE(WQWSD(NWQZM))  
      ALLOCATE(WQWSG(NWQZM))  
      ALLOCATE(WQWSLP(NWQZM))  
      ALLOCATE(WQWSRP(NWQZM))  
      ALLOCATE(WQWSS(NWQZM))  
      ALLOCATE(WQWSSET(LCMWQ,2))  
      ALLOCATE(WRSPB(LCM,KBM))  
      ALLOCATE(WRSPBA(LCM))  
      ALLOCATE(WRSPO(NSTM))  
      ALLOCATE(WRSPS(LCM,KBM))  
      ALLOCATE(WRSPSA(LCM))  
      ALLOCATE(WS(NTSM))  
      ALLOCATE(WS2(NTSM))  
      ALLOCATE(WSEDO(NSTM))  
      ALLOCATE(WSETA(LCM,0:KSM,NSTM))  
      ALLOCATE(WTCI(KCM,2))  
      ALLOCATE(WTLPF(LCM,KSM))  
      ALLOCATE(WVDISP(LCM,KCM))  
      ALLOCATE(WVDTKEM(KSM))  
      ALLOCATE(WVDTKEP(KSM))  
      ALLOCATE(WVENEP(LCM))  
      ALLOCATE(WVFRQL(LCM))  
      ALLOCATE(WVHUU(LCM,KCM))  
      ALLOCATE(WVHUV(LCM,KCM))  
      ALLOCATE(WVHVV(LCM,KCM))  
      ALLOCATE(WVKHC(LCM))  
      ALLOCATE(WVKHP(LCM))  
      ALLOCATE(WVKHU(LCM))  
      ALLOCATE(WVKHV(LCM))  
      ALLOCATE(WVPP(LCM,KCM))  
      ALLOCATE(WVPT(LCM,0:KCM))  
      ALLOCATE(WVPU(LCM,KCM))  
      ALLOCATE(WVPV(LCM,KCM))  
      ALLOCATE(WVTMP1(LCM))  
      ALLOCATE(WVTMP2(LCM))  
      ALLOCATE(WVTMP3(LCM))  
      ALLOCATE(WVTMP4(LCM))  
      ALLOCATE(WVWHA(LCM))  
      ALLOCATE(WWQ(LCM,0:KCM))  
      ALLOCATE(WWW(LCM,0:KCM))  
      ALLOCATE(WZ(LCM,0:KCM))  
      ALLOCATE(WZ1(LCM,0:KCM))  
      ALLOCATE(XBENMUD(LCMWQ))  
      ALLOCATE(XDOALL(LCMWQ,KCM))  
      ALLOCATE(XDOCOD(LCMWQ,KCM))  
      ALLOCATE(XDODEF(LCMWQ,KCM))  
      ALLOCATE(XDODOC(LCMWQ,KCM))  
      ALLOCATE(XDODZ(LCMWQ,KCM))  
      ALLOCATE(XDOKAR(LCMWQ,KCM))
      ALLOCATE(XDONIT(LCMWQ,KCM))  
      ALLOCATE(XDOOUT(LCMWQ,KCM))  
      ALLOCATE(XDOPPB(LCMWQ,KCM))  
      ALLOCATE(XDOPPM(LCMWQ,KCM))  
      ALLOCATE(XDOPSL(LCMWQ,KCM))  
      ALLOCATE(XDORRB(LCMWQ,KCM))  
      ALLOCATE(XDORRM(LCMWQ,KCM))  
      ALLOCATE(XDOSAT(LCMWQ,KCM))  
      ALLOCATE(XDOSOD(LCMWQ,KCM))  
      ALLOCATE(XDOTRN(LCMWQ,KCM))  
      ALLOCATE(XJETL(NQJPM))  
      ALLOCATE(XLIMCO2C(LCMWQ,KCM))  
      ALLOCATE(XLIMCO2D(LCMWQ,KCM))  
      ALLOCATE(XLIMCO2G(LCMWQ,KCM))  
      ALLOCATE(XLIMCO2M(LCMWQ,KCM))  
      ALLOCATE(XLIMDM(LCMWQ,KCM))  
      ALLOCATE(XLIMIC(LCMWQ,KCM))  
      ALLOCATE(XLIMID(LCMWQ,KCM))  
      ALLOCATE(XLIMIG(LCMWQ,KCM))  
      ALLOCATE(XLIMIM(LCMWQ,KCM))  
      ALLOCATE(XLIMNC(LCMWQ,KCM))  
      ALLOCATE(XLIMND(LCMWQ,KCM))  
      ALLOCATE(XLIMNG(LCMWQ,KCM))  
      ALLOCATE(XLIMNM(LCMWQ,KCM))  
      ALLOCATE(XLIMPC(LCMWQ,KCM))  
      ALLOCATE(XLIMPD(LCMWQ,KCM))  
      ALLOCATE(XLIMPG(LCMWQ,KCM))  
      ALLOCATE(XLIMPM(LCMWQ,KCM))  
      ALLOCATE(XLIMTC(LCMWQ,KCM))  
      ALLOCATE(XLIMTD(LCMWQ,KCM))  
      ALLOCATE(XLIMTG(LCMWQ,KCM))  
      ALLOCATE(XLIMTM(LCMWQ,KCM))  
      ALLOCATE(XLIMVM(LCMWQ,KCM))  
      ALLOCATE(XLRPD(LCGLM,KCM,NGLM))  
      ALLOCATE(XMACSUM(LCMWQ,KCM))  
      ALLOCATE(XMLRPD(LCGLM,KCM,NGLM))  
      ALLOCATE(XSMO20(LCMWQ))  
      ALLOCATE(YJETL(NQJPM))  
      ALLOCATE(YLRPD(LCGLM,KCM,NGLM))  
      ALLOCATE(YMLRPD(LCGLM,KCM,NGLM))  
      ALLOCATE(Z(0:KCM))  
      ALLOCATE(ZAD(KCM,1))  
      ALLOCATE(ZBEDC(LCM,KBM))  
      ALLOCATE(ZBEDG(LCM,0:KBM))  
      ALLOCATE(ZBEDGT(LCM))  
      ALLOCATE(ZBR(LCM))  
      ALLOCATE(ZBRE(LCM)) 
      IF(ISBEDSTR.EQ.3)THEN
        ALLOCATE(ZBRSED(LCM)) 
      ELSE
        ALLOCATE(ZBRSED(1)) 
      ENDIF
      ALLOCATE(ZELBED(LCM,KBM))  
      ALLOCATE(ZELBED1(LCM,KBM))  
      ALLOCATE(ZELBEDA(LCM))  
      ALLOCATE(ZELBEDA1(LCM))  
      ALLOCATE(ZEQ(LCM))  
      ALLOCATE(ZEQD(LCM))  
      ALLOCATE(ZEQDI(LCM))  
      ALLOCATE(ZEQI(LCM))  
      ALLOCATE(ZETATOP(LCM))  
      ALLOCATE(ZILRPD(LCGLM,KCM,NGLM))  
      ALLOCATE(ZJET(NQJPM))  
      ALLOCATE(ZLRPD(LCGLM,KCM,NGLM))
      ALLOCATE(ZMLRPD(LCGLM,KCM,NGLM))  
      ALLOCATE(ZP(0:KPCM))  
      ALLOCATE(ZZ(0:KCM))  
      ALLOCATE(ZZP(KPCM))  

      ! Begin SEDZLJ variables
      ALLOCATE(ALPHA_PX(LCM))
      ALLOCATE(ALPHA_PY(LCM))
      ALLOCATE(ALPHA_RX(LCM,NSCM))
      ALLOCATE(ALPHA_RY(LCM,NSCM))
      ALLOCATE(BED_SED_FLX(LCM,NSCM))
      ALLOCATE(BED_TOX_FLX(LCM,NTXM))
      ALLOCATE(BLFLAG(LCM,NSCM))
      ALLOCATE(BLVEL(LCM,NSCM))
      ALLOCATE(BULKDENS(KB,LCM))
      ALLOCATE(CAVG(LCM,KCM))
      ALLOCATE(CAVGT(LCM))
      ALLOCATE(CAVGS(LCM,NSCM))
      ALLOCATE(CBL(2,LCM,NSCM)) 
      ALLOCATE(CBLTOT(LCM))
      ALLOCATE(CONAVG(LCM,KCM))
      ALLOCATE(CONTTOT(LCM))
      ALLOCATE(CSEDF(LCM,KCM,NSCM))
      ALLOCATE(CSEDVR(NSCM,LCM))
      ALLOCATE(CTB(NSCM,LCM))
      ALLOCATE(CTEMP(NSCM,LCM))
      ALLOCATE(CTOTP(LCM))
      ALLOCATE(CTOX(LCM,KCM,NSCM)) !think this is unusual dimensioning, could it be NTXM?
      ALLOCATE(D(NSCM,LCM))
      ALLOCATE(D50(NSCM))
      ALLOCATE(D50AVG(LCM))
      ALLOCATE(DBL(NSCM,LCM))
      ALLOCATE(DBULK(NSCM))
      ALLOCATE(DEP(LCM))
      ALLOCATE(DEPO(LCM))
      ALLOCATE(DIFFCOFF(NTXM))
      ALLOCATE(DISTAR(NSCM))
      ALLOCATE(DPCB(NSCM,LCM))
      ALLOCATE(DZBL(LCM,NSCM))
      ALLOCATE(DZBL_LAST(LCM,NSCM))
      ALLOCATE(DWS(NSCM))
      ALLOCATE(E(NSCM,LCM))
      ALLOCATE(ERATETEMP(20,KB,ITBM))
      ALLOCATE(EBD(KB,LCM))
      ALLOCATE(ELAY(NSCM))
      ALLOCATE(EBL(LCM))
      ALLOCATE(ECON(NSCM))
      ALLOCATE(ERATEND(NSICM,ITBM))
      ALLOCATE(ERATE(KB,LCM,ITBM))
      ALLOCATE(ERATEMOD(LCM))
      ALLOCATE(EPCB(NSCM,LCM))
      ALLOCATE(ESUS(LCM))
      ALLOCATE(ETOTO(LCM))
      ALLOCATE(FC(LCM))
      ALLOCATE(FWW(LCM))
      ALLOCATE(FWDIR(LCM,8))
      ALLOCATE(FWVHT(LCM))
      ALLOCATE(FWVTP(LCM))
      ALLOCATE(HF(NSCM))
      ALLOCATE(HT(LCM))
      ALLOCATE(KN(LCM))
      ALLOCATE(KPART(NTXM))
      ALLOCATE(KRATE(NSCM))
      ALLOCATE(LAYER(KB,LCM))
      ALLOCATE(NCORENO(ICM,JCM))
      ALLOCATE(NSCD(2))
      ALLOCATE(PCBDEP(LCM))
      ALLOCATE(PCBDH(NSCM))
      ALLOCATE(PCBDISS(LCM,KCM))
      ALLOCATE(PCBFRAC(NSCM,LCM))
      ALLOCATE(PCBH(NSCM))
      ALLOCATE(PCONT(NSCM,KB,LCM))
      ALLOCATE(PCONTEMP(NSCM,KB))
      ALLOCATE(PER(NSCM,KB,LCM))
      ALLOCATE(POTDIFF(NSCM))
      ALLOCATE(PROBG(NSCM,LCM))
      ALLOCATE(PROBL(NSCM,LCM))
      ALLOCATE(PROBVR(NSCM,LCM))
      ALLOCATE(PSUS(LCM,NSCM))
      ALLOCATE(QBSED(LCM,NSCM))
      ALLOCATE(SCD(2))
      ALLOCATE(SCND(NSICM))
      ALLOCATE(SH_SCALE(LCM))
      ALLOCATE(SLLN(LCM))
      ALLOCATE(SSGI(NSCM))
      ALLOCATE(STWVHT(LCM,200))
      ALLOCATE(STWVTP(LCM,200))
      ALLOCATE(STWVDR(LCM,200))
      ALLOCATE(TACT(LCM))
      ALLOCATE(TAU(LCM))
      ALLOCATE(TAUCOR(KB,LCM))
      ALLOCATE(TAUCRIT(LCM))
      ALLOCATE(TAUCRITE(NSICM))
      ALLOCATE(TAUCRITSF(LCM))
      ALLOCATE(TCRE(NSCM))
      ALLOCATE(TAUDD(2))
      ALLOCATE(TAULOC(ITBM))
      ALLOCATE(TCRSUS(NSCM))
      ALLOCATE(THCK(LCM))
      ALLOCATE(TOXAVGT(LCM))
      ALLOCATE(TRANS(LCM,NSCM))
      ALLOCATE(TSED(KB,LCM))
      ALLOCATE(TSED0(KB,LCM))
      ALLOCATE(TSED0S(KB))
      ALLOCATE(TSET0T(LCM))
      ALLOCATE(TSEDT(LCM))
      ALLOCATE(TTEMP(NSCM,LCM))
      ALLOCATE(TTEMPCONT(NSCM,LCM))
      ALLOCATE(UBL(LCM,NSCM))
      ALLOCATE(UBLE(NSCM,LCM))
      ALLOCATE(UBLN(NSCM,LCM))
      ALLOCATE(USW(LCM,NSCM))
      ALLOCATE(UVEL(LCM,KC))
      ALLOCATE(VBL(LCM,NSCM))
      ALLOCATE(VVEL(LCM,KCM))
      ALLOCATE(VZDIF(LCM))
      ALLOCATE(WVANG(LCM))
      ALLOCATE(WVFREQ(LCM))
      ALLOCATE(WVORBIT(LCM))
      ALLOCATE(XBLFLUX(LCM,NSCM))
      ALLOCATE(YBLFLUX(LCM,NSCM))
! End SEDZLJ variables


! Begin dissolved carbon dioxide variables    VB
      ALLOCATE(CO2WQ(LCMWQ))
      ALLOCATE(CDOSATIDX(LCM))  
      ALLOCATE(WQCDOS(LCM))  
      ALLOCATE(WQITOP(LCM,KCM))
      ALLOCATE(WQP22(LCMWQ))
      ALLOCATE(XCDOALL(LCMWQ,KCM))  
      ALLOCATE(XCDODEF(LCMWQ,KCM))  
      ALLOCATE(XCDODOC(LCMWQ,KCM))  
      ALLOCATE(XCDODZ(LCMWQ,KCM))  
      ALLOCATE(XCDOKAR(LCMWQ,KCM))  
      ALLOCATE(XCDOPPB(LCMWQ,KCM))  
      ALLOCATE(XCDOPPM(LCMWQ,KCM))  
      ALLOCATE(XCDOPSL(LCMWQ,KCM))  
      ALLOCATE(XCDORRB(LCMWQ,KCM))  
      ALLOCATE(XCDORRM(LCMWQ,KCM))  
      ALLOCATE(XCDOSAT(LCMWQ,KCM))  
      ALLOCATE(XCDOTRN(LCMWQ,KCM))
      ALLOCATE(WQKRCDOS(LCMWQ))  
      ! Begin MACROALGAE variables
	  ALLOCATE(MACDIAM(LCM)) !diameter of MACROALGAE (m)
        ALLOCATE(MACAD(LCM))
        ALLOCATE(MVEGZ(LCM))
	  ALLOCATE(MACHP(LCM))
 	  ALLOCATE(ZMAXMAC(0:LCM)) !
	  ALLOCATE(ZMINMAC(0:LCM)) !
        ALLOCATE(IJLMAC(MCOUNT,3)) !IJL for macroalgae
        ALLOCATE(KMAC(MCOUNT,KCM)) !Layers where macroalgae are present
        ALLOCATE(RMAC(2:LCM-1,KCM-1))
      ! End MACROALGAE variables
      ! Begin MHK variables SCJ
	  ALLOCATE(IJLTURB(TCOUNT,3))
	  ALLOCATE(CDSUP(MHKTYP)) !
	  ALLOCATE(CTMHK(MHKTYP)) !
        ALLOCATE(BOFFMHK(MHKTYP),BOFFSUP(MHKTYP))
        ALLOCATE(TOFFMHK(MHKTYP),TOFFSUP(MHKTYP))
	  ALLOCATE(DENMHK(MHKTYP)) !density of MHK devices (#/cell)
        ALLOCATE(EMHK(TCOUNT,LCM)) !MHK device
        ALLOCATE(ESUP(TCOUNT,LCM)) !MHK support structure
	  ALLOCATE(FXMHK(LCM,KCM))  !
	  ALLOCATE(FXMHKE(LCM))  !
	  ALLOCATE(FXSUP(LCM,KCM))  !
	  ALLOCATE(FXSUPE(LCM))  !
	  ALLOCATE(FYMHK(LCM,KCM))  !
	  ALLOCATE(FYMHKE(LCM))  !
	  ALLOCATE(FYSUP(LCM,KCM))  !
	  ALLOCATE(FYSUPE(LCM))  !
        ALLOCATE(HEIGHTMHK(LCM))
	  ALLOCATE(HEIGHTSUP(LCM))
	  ALLOCATE(PMHK(LCM,KCM)) ! array that accumulates MHK power 
	  ALLOCATE(PSUP(LCM,KCM)) ! array that accumulates support power loss 
	  ALLOCATE(REFELEV(LCM))
	  ALLOCATE(VMAXCUT(MHKTYP)) !
	  ALLOCATE(VMINCUT(MHKTYP)) !
	  ALLOCATE(WIDTHMHK(MHKTYP)) !
	  ALLOCATE(WIDTHSUP(MHKTYP)) !
 	  ALLOCATE(ZMAXMHK(MHKTYP,LCM)) !
	  ALLOCATE(ZMAXSUP(MHKTYP,LCM)) !
	  ALLOCATE(ZMINMHK(MHKTYP,LCM)) !
	  ALLOCATE(ZMINSUP(MHKTYP,LCM)) !
        ALLOCATE(FXTEMP(LCM,KCM))
        ALLOCATE(FYTEMP(LCM,KCM))
      ! END MHK variables SCJ

! Begin MPI parallel variables
      ALLOCATE(IC_LORP(NPARTX))
      ALLOCATE(JC_LORP(NPARTY))
      ALLOCATE(TILEID(NPARTS+1))
      ALLOCATE(TILE2NODE(NPARTS))

      ALLOCATE(IJCT_GLOBAL(-2:GNX+2,-2:GNY+2))
      ALLOCATE(IJCTLT_GLOBAL(-2:GNX+2,-2:GNY+2))  
      ALLOCATE(XPAR(-2:GNX+2))
      ALLOCATE(YPAR(-2:GNY+2))
      ALLOCATE(XLOC(-2:GNX+2))
      ALLOCATE(YLOC(-2:GNY+2))
      ALLOCATE(ANS(NPARTS))
      ALLOCATE(IPBS_GL(NPBSM))
      ALLOCATE(IPBW_GL(NPBWM))
      ALLOCATE(IPBE_GL(NPBEM))
      ALLOCATE(IPBN_GL(NPBNM))
      ALLOCATE(JPBS_GL(NPBSM))
      ALLOCATE(JPBW_GL(NPBWM))
      ALLOCATE(JPBE_GL(NPBEM))
      ALLOCATE(JPBN_GL(NPBNM))
      ALLOCATE(LPBS_GL(NPBSM))
      ALLOCATE(LPBW_GL(NPBWM))
      ALLOCATE(LPBE_GL(NPBEM))
      ALLOCATE(LPBN_GL(NPBNM))
      ALLOCATE(ISPBS_GL(NPBSM))
      ALLOCATE(ISPBW_GL(NPBWM))
      ALLOCATE(ISPBE_GL(NPBEM))
      ALLOCATE(ISPBN_GL(NPBNM))
      ALLOCATE(NPSERS_GL(NPBSM))
      ALLOCATE(NPSERW_GL(NPBWM))
      ALLOCATE(NPSERE_GL(NPBEM))
      ALLOCATE(NPSERN_GL(NPBNM))
      ALLOCATE(PCBE_GL(NPBEM,MTM))
      ALLOCATE(PCBN_GL(NPBNM,MTM))
      ALLOCATE(PCBS_GL(NPBSM,MTM))
      ALLOCATE(PCBW_GL(NPBWM,MTM))
      ALLOCATE(PSBE_GL(NPBEM,MTM))
      ALLOCATE(PSBN_GL(NPBNM,MTM))
      ALLOCATE(PSBS_GL(NPBSM,MTM))
      ALLOCATE(PSBW_GL(NPBWM,MTM))
!River global data arrays
      ALLOCATE(IQS_GL(NQSIJM))
      ALLOCATE(JQS_GL(NQSIJM))
      ALLOCATE(QSSE_GL(NQSIJM))
      ALLOCATE(QSSE(NQSIJM))
      ALLOCATE(NQSMUL_GL(NQSIJM))
      ALLOCATE(NQSMF_GL(NQSIJM))
      ALLOCATE(NQSERQ_GL(NQSIJM))
      ALLOCATE(NCSERQ_GL(NQSIJM,NSTVM))
      ALLOCATE(NTOXSRQ_GL(NQSIJM))
      ALLOCATE(NSEDSRQ_GL(NQSIJM))
      ALLOCATE(NSNDSRQ_GL(NQSIJM))
      ALLOCATE(NTOXSRQ(NQSIJM))
      ALLOCATE(NSEDSRQ(NQSIJM))
      ALLOCATE(NSNDSRQ(NQSIJM))
      ALLOCATE(QFACTOR_GL(NQSIJM))
      ALLOCATE(CQSE_GL(NQSIJM,NSTVM))
!Concentration global data arrays
      ALLOCATE(ICBS_GL(NBBSM))
      ALLOCATE(JCBS_GL(NBBSM))
      ALLOCATE(NTSCRS_GL(NBBSM))
      ALLOCATE(NCSERS_GL(NBBSM,NSTVM))
      ALLOCATE(CBS_GL(NBBSM,2,NSTVM))
      ALLOCATE(ICBW_GL(NBBWM))
      ALLOCATE(JCBW_GL(NBBWM))
      ALLOCATE(NTSCRW_GL(NBBWM))
      ALLOCATE(NCSERW_GL(NBBWM,NSTVM))
      ALLOCATE(CBW_GL(NBBWM,2,NSTVM))
      ALLOCATE(ICBE_GL(NBBEM))
      ALLOCATE(JCBE_GL(NBBEM))
      ALLOCATE(NTSCRE_GL(NBBEM))
      ALLOCATE(NCSERE_GL(NBBEM,NSTVM))
      ALLOCATE(CBE_GL(NBBEM,2,NSTVM))
      ALLOCATE(ICBN_GL(NBBNM))
      ALLOCATE(JCBN_GL(NBBNM))
      ALLOCATE(NTSCRN_GL(NBBNM))
      ALLOCATE(NCSERN_GL(NBBNM,NSTVM))
      ALLOCATE(CBN_GL(NBBNM,2,NSTVM))
      ALLOCATE(ILTMSR_GL(MLTMSRM))
      ALLOCATE(JLTMSR_GL(MLTMSRM))
      ALLOCATE(NTSSSS_GL(MLTMSRM))
      ALLOCATE(MTMSRP_GL(MLTMSRM))
      ALLOCATE(MTMSRC_GL(MLTMSRM))
      ALLOCATE(MTMSRA_GL(MLTMSRM))
      ALLOCATE(MTMSRUE_GL(MLTMSRM))
      ALLOCATE(MTMSRUT_GL(MLTMSRM))
      ALLOCATE(MTMSRU_GL(MLTMSRM))
      ALLOCATE(MTMSRQE_GL(MLTMSRM))
      ALLOCATE(MTMSRQ_GL(MLTMSRM))
      ALLOCATE(MLTM_GL(MLTMSRM))
      ALLOCATE(CLTMSR_GL(MLTMSRM))

      ALLOCATE(LEAST(LCM))
      ALLOCATE(LWEST(LCM))

      ALLOCATE(DUM_COM1(LCM,0:KCM))  
      ALLOCATE(DUM_COM2(LCM,0:KCM))  
! declare variable related to aquaculture installation
      ALLOCATE(DRPRDRG(0:LAQUA,KAQUA))
      ALLOCATE(DRPRTURB(0:LAQUA,KAQUA))
      ALLOCATE(FXDRPRE(0:LAQUA))
      ALLOCATE(FYDRPRE(0:LAQUA))
      ALLOCATE(FXDRPR(0:LAQUA,KAQUA))
      ALLOCATE(FYDRPR(0:LAQUA,KAQUA))
      ALLOCATE(XCOR(LCM,5))
      ALLOCATE(YCOR(LCM,5))
      ALLOCATE(AREA(LCM))
! Declare Variables related to Deep thunder coupling
          ALLOCATE(TATMT_M1(LCM))  
          ALLOCATE(TATMT_M2(LCM))  
          ALLOCATE( WNDVELE_M1(LCM))  
          ALLOCATE( WNDVELE_M2(LCM))  
          ALLOCATE( WNDVELN_M1(LCM))  
          ALLOCATE( WNDVELN_M2(LCM))  
          ALLOCATE( PATMT_M1  (LCM))  
          ALLOCATE( PATMT_M2  (LCM))  
          ALLOCATE( RAINT_M1  (LCM))  
          ALLOCATE( RAINT_M2  (LCM))  
          ALLOCATE( EVAPT_M1  (LCM))  
          ALLOCATE( EVAPT_M2  (LCM))  
          ALLOCATE( RHA_M1    (LCM))  
          ALLOCATE( RHA_M2    (LCM))  
          ALLOCATE( SOLSWRT_M1(LCM))  
          ALLOCATE( SOLSWRT_M2(LCM))  
          ALLOCATE( LWDNB_M1  (LCM))  
          ALLOCATE( LWDNB_M2  (LCM))  
          ALLOCATE( LWUPB_M1  (LCM))  
          ALLOCATE( LWUPB_M2  (LCM))  
          ALLOCATE( LWDNB(LCM))  
          ALLOCATE( LWUPB(LCM))
      !Allocate Macroalgae variables
          ALLOCATE(MACLIM( LCM, KCM, 8)) !Spatially variable 1-growth rate, 2-light limitation, 3-temperature limitation, 4-NO3/NH4 limitation, 5-PO4 limitation, 6-CO2 limitation, 7-metabolism, 8-predation
      !Allocate Makai DA variables
          ALLOCATE(AREAOLD(LCM))
          ALLOCATE(AREANEW(LCM))
          ALLOCATE(R1(NSPNG))
          ALLOCATE(R2(NSPNG))
          ALLOCATE(RU1(NSPNG))
          ALLOCATE(RU2(NSPNG))
          ALLOCATE(QWSEASM(NDDAM,NLDAM))
          ALLOCATE(WINDSXX(LCM))  
          ALLOCATE(WINDSXY(LCM))  
          ALLOCATE(WINDSYX(LCM))  
          ALLOCATE(WINDSYY(LCM))
          ALLOCATE(USERT(KCM,0:NLUVDA)) 
          ALLOCATE(VSERT(KCM,0:NLUVDA))
          ALLOCATE(ICUVDA_GL(NLUVDA))
          ALLOCATE(JCUVDA_GL(NLUVDA))
          ALLOCATE(NUVSERA_GL(NLUVDA))
          ALLOCATE(ICUVDA(NLUVDA))
          ALLOCATE(JCUVDA(NLUVDA))
          ALLOCATE(NUVSERA(NLUVDA))
          ALLOCATE(TSUUDA(NLUVDA))
          ALLOCATE(TSVVDA(NLUVDA))
          ALLOCATE(NORMDIR(NLUVDA))
          ALLOCATE(FSUVDA(NLUVDA))
          ALLOCATE(IWUVDA(NLUVDA))
          ALLOCATE(IRVUDA(NLUVDA))
          ALLOCATE(RRUVDA(NLUVDA))
          ALLOCATE(TSUUDA_GL(NLUVDA))
          ALLOCATE(TSVVDA_GL(NLUVDA))
          ALLOCATE(NORMDIR_GL(NLUVDA))
          ALLOCATE(FSUVDA_GL(NLUVDA))
          ALLOCATE(IWUVDA_GL(NLUVDA))
          ALLOCATE(IRVUDA_GL(NLUVDA))
          ALLOCATE(RRUVDA_GL(NLUVDA))
          ALLOCATE(TSUTMP(NLUVDA))
          ALLOCATE(TSVTMP(NLUVDA))
          ALLOCATE(ICWSEDA(NLWSEDA))
          ALLOCATE(JCWSEDA(NLWSEDA))
          ALLOCATE(NWSESERA(NLWSEDA))
          ALLOCATE(TSWSEDA(NLWSEDA))
          ALLOCATE(MUVTLAST(NUVSER))
          ALLOCATE(MUVSER(NUVSER))
          ALLOCATE(TCUVSER(NUVSER))
          ALLOCATE(TAUVSER(NUVSER))
          ALLOCATE(TUVSER(MUVSERMAX,NUVSER))
          ALLOCATE(USER(MUVSERMAX,KCM,NUVSER),VSER(MUVSERMAX,KCM,NUVSER)) 
          ALLOCATE(QWSEDA(LCM,KCM))
          ALLOCATE(TUVKC(KCM))
          ALLOCATE(TCSERKC(KCM))
          ALLOCATE(UROTTMP(KCM))
          ALLOCATE(VROTTMP(KCM))
          ALLOCATE(RFBODYFXI(LCM))
          ALLOCATE(RFBODYFYI(LCM))
          ALLOCATE(IC_STRID(NPARTX))
          ALLOCATE(JC_STRID(NPARTY))


      RETURN  
      END  

